【发布时间】:2012-04-18 12:11:02
【问题描述】:
ECMASCRIPT 将原型对象定义为构造函数的原型属性。
以下是从 ECMA-262 复制的:
4.3.4 构造函数 创建和初始化对象的函数对象 注意构造函数的“原型”属性的值是一个原型对象,用于实现继承和共享属性。
为什么 HTMLDivElement.constructor.prototype == HTMLDivElement ?
如果 a 是 HTMLDivElement 对象,Object.getPrototypeOf(a) 返回 HTMLElement,而它应该返回 constructor.prototype,即 HTMLDivElement。
这与 ECMA 标准完全矛盾。
请帮助我理解这个概念...提前非常感谢。
【问题讨论】:
-
你问题的前提其实是不正确的:HTMLDivElement.constructor.prototype !== HTMLDivElement
-
事实上,DOM 元素并不是真正的 JavaScript。它们是模仿 JavaScript 对象行为的宿主元素。例如,Firefox 会给出非常不同的结果。
-
感谢 Pointy,实际上 firefox 显示了 HTMLDIVElement 和 HTMLElement 的 xpconnect。所以我无法区分 chrome 和 firefox 之间的结果。 element.__proto__.toString(); [xpconnect 包装的原生原型] element.__proto__.__proto__.toString(); [xpconnect 包装的原生原型]
-
@Praveen
HTMLDivElement.constructor.prototype.constructor.prototype == HTMLDivElement.constructor.prototype在两个浏览器中 -
是的,这是真的,constructor.prototype.constructor.prototype 是一样的,但你如何将它与我的问题联系起来?
标签: javascript dom