繁体   English   中英

Object.create()的怪异行为

[英]Weird behaviour of Object.create()

有人可以解释这里发生了什么:代码示例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如何管理其范围?

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

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

在此处了解更多信息:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM