关于Object.create()与原型链的面试题?

一:

var obj1 = {name:'one'};
obj2 = Object.create(obj1);
obj2.name = 'two';
console.log(obj1.name);//one

二:

var obj1 = {prop:{name:'one'}};
obj2 = Object.create(obj1);
obj2.prop.name = 'two';
console.log(obj1.prop.name);//two

三:

var obj1 = {list:['one','one','one']};
obj2 = Object.create(obj1);
obj2.list[0] = 'two';
console.log(obj1.list[0]);//two

为什么后面两段代码修改的是原型链上的属性呢?

问题是,为什么二、三中的代码不是像代码一中直接给obj2添加属性,而是修改了原型链上的属性?
求解释下一、二、三的结果?


沧海一幻觉
浏览 919回答 2
2回答

青春有我

obj2 = Object.create(obj1)是把obj1作为obj2的原型,所以obj2访问的是原型链的属性
打开App,查看更多内容
随时随地看视频慕课网APP