node.js - javascript object.create的问题
怪我咯
怪我咯 2017-04-11 13:12:06
0
1
339
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就会改变呢

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(1)
伊谢尔伦
Object.create

比较特别。

var cc = Object.create(aa);
cc instanceof aa.constructor //true
aa.isPrototypeOf(cc) //true
cc.hasOwnProperty('b') //false
aa.hasOwnProperty('b') //true

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

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

cc.b = [1,2]
cc.hasOwnProperty('b') //true
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!