参考下面的 JavaScript 代码片段,问题:
为什么对象字面量 {item: {value: "foobar"}} 在分配给变量时(如第 1 行)与作为参数传递给 Object.create() 时的行为不同(如第 5 行)?
第 5 行和第 8 行有什么区别 - 即为什么第 5 行是将第二个参数传递给 Object.create() 而不是第 8 行(覆盖委托中的 item 属性)的正确方法?
代码片段:
1 var obj = {item: {value: "foobar"}};
2 console.log(obj.item); // [object Object]
3 console.log(obj.item.value); // foobar
4 var delegate = {item: "xxx"};
5 var obj1 = Object.create(delegate, {item: {value: "foobar"}});
6 console.log(obj1.item); // foobar
7 console.log(obj1.item.value); // undefined
8 var obj2 = Object.create(delegate, {item: "bar"});
9 console.log(obj2.item); // <nothing>