javascript object.create的问题

var aa={a:1,b:[1,2,3]};
var bb=Object.createaa;
var cc=Object.createaa;
bb.b=[1,2];
console.logbb.b;
console.logaa.b;
cc.b.push3;
console.logcc.b;
console.logaa.b;
输出如下,请问为什么用=赋值就不会改变原型aa的属性的值,但是push就会改变呢

Object.create

比较特别。

var cc = Object.createaa;
cc instanceof aa.constructor //true
aa.isPrototypeOfcc //true
cc.hasOwnPropertyb //false
aa.hasOwnPropertyb //true

*cc并没有自己的b属性,之所以能够执行
cc.b.push3,是因为cc可以找到它的原型对象上的b属性。

如果是这种情况,
*cc.b = [1,2]相当于给自己加一个b属性,这个bcc自己的。
此时

cc.b = [1,2]
cc.hasOwnPropertyb //true

发表评论

电子邮件地址不会被公开。 必填项已用*标注