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

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
比较特别。
*
cc并没有自己的b属性,之所以能够执行cc.b.push(3),是因为cc可以找到它的原型对象上的b属性。如果是这种情况,
*
cc.b = [1,2]相当于给自己加一个b属性,这个b是cc自己的。此时