Javascript - Object.create:我的理解是否正确?

时间:2018-01-18 19:55:52

标签: javascript inheritance prototype prototypal

我试图完全理解原型是如何工作的。

这是我对原型的定义:

  

一个内置属性,所有对象都有(基础对象除外),它指向并引用了一个' proto {}' object是另一个对象的副本,如果在原始对象中找不到,则可以引用其属性和方法。

这是对的吗?特别是我想知道'是另一个对象的副本' part - 表示JS引擎在内存空间中创建Object B的存储副本,Object A的prototype属性指向该文件以供参考。

现在我对Object.create的问题:

我的理解是这个方法使得原型(或对象本身?)使用它所使用的任何对象,继承(IOW,引用传入的Object的副本)传递的另一个对象的属性和方法in。

var john = Object.create(Person);

在上面的代码中,创建了john对象及其对象     prototype属性指向具有方法和的创建对象     Person对象的属性?或者换句话说,Object.create生成Person对象的副本,并将其放在john的prototype属性指向的内存空间中。这是对正在发生的事情的正确理解吗?

如果是这样的话,是john的原型指向对象(' person')的副本的原因,因为它允许属性和方法的值要修改而不覆盖与Person关联的原型对象继承的john对象中的props /方法?

我试图打破这一点,以便我能理解并尽量不要使概念过于复杂。

这是我画的图片,以进一步说明我目前的理解:

enter image description here

1 个答案:

答案 0 :(得分:0)

不,没有复制任何涉及的内容。请点击那一部分:

  

Prototype:一个内置属性,所有对象都有(基础对象除外),它指向并引用一个'proto {}'对象,它是的副本另一个对象,如果在原始对象中找不到,则可以引用其属性和方法。

保持简单。

是的,因为有直接引用而没有涉及其他内容,这意味着对原型对象的继承属性的任何更改都将动态反映在对象中。