首页 > javascript

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


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


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

【热门文章】
【热门文章】