6

[首先,这个问题可能与JavaScript .prototype 如何工作?但有不同的上下文。]

我遇到了这个博客,其中指出:

在 JavaScript 中,每个对象都有一个称为“原型”的属性。对象的原型允许我们向该对象的所有实例(甚至是现有实例)添加属性。

根据我目前的理解,上述语句对于初学者来说是令人困惑的,因为它没有区分“原型”和“[[Prototype]]”。并非所有对象都有prototype属性,例如:

var myobject = {};
myobject.prototype; // Undefined

我认为如果我们说:

在 JavaScript 中,每个对象都有一个名为“[[Prototype]]”的内部属性,在某些浏览器中可以通过访问名为“__proto__”的非标准属性来查看该属性。对象的原型允许我们向该对象的所有实例(甚至是现有实例)添加属性。只有函数(因此构造函数)具有要设置的“原型”属性,这允许我们向该函数/构造函数创建的该对象的所有实例添加属性。

这是对 JavaScript 原型的更准确描述,还是我遗漏了什么?提前致谢。

4

0 回答 0