来自http://www.jibbering.com/faq/faq_notes/closures.html:
注意:ECMAScript 定义了一个内部的 Object 类型的 [[prototype]] 属性。这个属性不能直接从脚本中访问,但是在属性访问解析中使用它所引用的对象链,即对象的原型链。公共的 prototype 属性存在是为了允许关联到内部 [[prototype]] 属性进行原型的赋值、定义和操作。两者之间的关系细节详见 ECMA 262(第三版),超出了本讨论的范围。
两者之间的关系细节是什么?我浏览了一下 ECMAScript 262,但只看到如下内容:
程序表达式 constructor.prototype 引用构造函数的相关原型,
Native ECMAScript 对象有一个名为 [[Prototype]] 的内部属性。该属性的值为 null 或对象,用于实现继承。
每个内置函数和每个内置构造函数都有 Function 原型对象,它是表达式 Function.prototype 的初始值。
每个内置原型对象都有一个名为 Object.prototype 的 Object 原型对象作为其内部 [[Prototype]] 属性的初始值,除了 Object 原型对象本身。
通过这些信息,我得出的结论是,对于几乎所有对象来说,[[Prototype]] 属性等同于 prototype
属性。我理解错了吗?
__proto__
访问[[Prototype]]
。 - Claudiu