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呢。
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呢。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
因为
f2
是一个对象,所以如果直接f2.prop2 = 666
会在这个对象上添加该属性而不是修改原型上的。对象访问属性的优先级是先自己,然后顺着原型链向上找。