javascript

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呢。

阅读 2.7k
2 个回答

因为 f2 是一个对象,所以如果直接 f2.prop2 = 666 会在这个对象上添加该属性而不是修改原型上的。对象访问属性的优先级是先自己,然后顺着原型链向上找。

因为找到了定义好的变量和方法就不去原型链里面找了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题