[首先,这个问题可能采用与How does JavaScript .prototype work?相同的概念,但具有不同的背景。]
我偶然发现了this blog:
在JavaScript中,每个对象都有一个名为“prototype”的属性。一个 object的原型允许我们为所有实例添加属性 该对象(甚至是现有实例)。
根据我的理解,到目前为止,上述陈述对于初学者来说是令人困惑的,因为它没有区分“原型”和“[[原型]]”。并非所有对象都具有prototype
属性,例如:
var myobject = {};
myobject.prototype; // Undefined
我认为如果我们说:
会更好在JavaScript中,每个对象都有一个名为的内部属性 “[[Prototype]]”可以在某些浏览器中通过访问来查看 非标准属性称为“__proto__”。对象的原型 允许我们向该对象的所有实例添加属性(甚至到 现有的实例)。 只有函数(因此是构造函数) 'prototype'属性设置允许我们向所有人添加属性 由该函数/构造函数创建的该对象的实例。
这是对JavaScript原型的更准确的描述,还是我错过了什么?提前谢谢。