Person.prototype.name = "sunny"; function Person () { } var person = new Person(); Person.prototype = { name : "cherry" }
Person的name最终为“sunny”,原因如下:
构造函数生成时,会在函数中隐式:
function Person () { var this = {__proto__:Person.prototype} }
此时name为“sunny”已被储存在__proto__中
再更改
Person.prototype = { name : "cherry" }
并不影响__proto__,因此Person.name输出为sunny。
整个过程简单举例就如下:
Person.prototype = {name = "a"} __Proto__ = Person.prototype; Person.prototype = {name = "b"}
再简化概念就如下:
var a = 1; var b = a; a = 2; console.log(b);
b必然是1