我试图完全理解原型是如何工作的。
这是我对原型的定义:
一个内置属性,所有对象都有(基础对象除外),它指向并引用了一个' 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 /方法?
我试图打破这一点,以便我能理解并尽量不要使概念过于复杂。
这是我画的图片,以进一步说明我目前的理解:
答案 0 :(得分:0)
不,没有复制任何涉及的内容。请点击那一部分:
Prototype:一个内置属性,所有对象都有
(基础对象除外),它指向并引用一个'proto {}'对象,它是的副本另一个对象,如果在原始对象中找不到,则可以引用其属性和方法。
保持简单。
是的,因为有直接引用而没有涉及其他内容,这意味着对原型对象的继承属性的任何更改都将动态反映在对象中。