1

有人可以解释这里发生了什么:代码示例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 在扩展最终对象时如何设法破坏其范围?

4

1 回答 1

1

in 中的第二个参数Object.create应该是以非常严格的格式给出的属性对象。例如,这将起作用:

var o1 = classCreate({}, {a: {value: o2}});

在此处阅读更多信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties

于 2014-01-02T09:33:03.400 回答