new一个对象时会隐式产生一个 this = {proto:Person.prototype}
Person.prototype.name = 'du';
function Person(){
//var this = {__proto__:Person.prototype} new Person时产生
};
Person.prototype = {
name : 'gao'
}
var person = new Person();
console.log(person.name);
由于是new Person时才产生this = {proto:Person.prototype},所以这段代码最终结果为 gao
换一种方式:
Person.prototype.name = 'du';
function Person(){};
var person = new Person();
Person.prototype = {
name : 'gao'
}
console.log(person.name);
我们将new Person提上去,结果将变为du
因为new时已经产生了this = {proto:Person.prototype}
此时__proto__和Person.prototype均为du,后面代码的作用只能是
Person.prototype.name = ‘gao’ 而对__proto__没有影响