Object.create(someObject)函数不继承属性

时间:2014-09-06 20:29:11

标签: javascript

使用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 }
> 

2 个答案:

答案 0 :(得分:3)

原型属性不会是打印到控制台的字符串表示的一部分。

您可以验证是否确实可以调用b.p1并且相应的值为2

您也可以尝试打印b.__proto__

{ p1: 2 }

答案 1 :(得分:3)

没有错误都正常工作。来自MDN

  

Object.create()方法使用指定的原型对象和属性创建一个新对象。

该对象是使用原型创建的,但原型永远不会显示在节点中(在我知道的任何浏览器控制台中)。您可以使用b.__proto__

查看原型

enter image description here