有人可以解释一下这里发生了什么: 代码示例1:
o2={b:10};
function classCreate(proto,o){
return Object.create(proto,o);
}
var o1=classCreate({a:o2},{});
console.log(o1.a.b); // prints 10
代码示例2:
o2={b:10};
function classCreate(proto,o){
return Object.create(proto,o);
}
var o1=classCreate({},{a:o2});
console.log(o1.a.b); //reference error
在扩展最终对象时,Object.create如何设法破坏其范围?
答案 0 :(得分:1)
Object.create
中的第二个参数应该是以非常严格的格式给出的属性对象。例如,这将起作用:
var o1 = classCreate({}, {a: {value: o2}});
在这里阅读更多相关信息: