function Foo() {
this.prop = 123;
}
Foo.prototype.prop2 = 555;
var f1 = new Foo()
f2 = new Foo();
f1.__proto__.prop2 = 666;
f2.__proto__.prop2 = 888;
console.log(f1.prop2, f2.prop2);
这样输出是888,888
f2.prop2= 666;
输出怎么就是666,888呢。
因为找到了定义好的变量和方法就不去原型链里面找了
因为 f2
是一个对象,所以如果直接 f2.prop2 = 666
会在这个对象上添加该属性而不是修改原型上的。对象访问属性的优先级是先自己,然后顺着原型链向上找。