使用Object.create(someObject)方法创建对象时,原始方法的属性不是由创建的方法派生的。如何使其派生现有属性。?
> a = {}
> a.p1 = '8'; // add a property to object
> b = Object.create(a);
> b // b does not inherit the property p1.
{}
要重现错误,请使用节点控制台,如下所示:
$ node
> a = {}
{}
> a.p1 = 2;
2
> b = Object.create(a);
{}
> b
{}
> a
{ p1: 2 }
>
答案 0 :(得分:3)
原型属性不会是打印到控制台的字符串表示的一部分。
您可以验证是否确实可以调用b.p1
并且相应的值为2
您也可以尝试打印b.__proto__
{ p1: 2 }
答案 1 :(得分:3)
没有错误都正常工作。来自MDN:
Object.create()方法使用指定的原型对象和属性创建一个新对象。
该对象是使用原型创建的,但原型永远不会显示在节点中(在我知道的任何浏览器控制台中)。您可以使用b.__proto__