为什么选择HTMLDivElement.constructor.prototype == HTMLDivElement?它应该是原型对象

时间:2012-04-04 18:16:44

标签: javascript dom

ECMASCRIPT将原型对象定义为构造函数的原型属性。

以下内容是从ECMA-262复制的:

4.3.4 构造函数 用于创建和初始化对象的函数对象 注意构造函数的“prototype”属性的值是一个原型对象,用于实现继承和共享属性。

为什么选择HTMLDivElement.constructor.prototype == HTMLDivElement?

如果a是HTMLDivElement对象,则Object.getPrototypeOf(a)返回HTMLElement,而它应返回constructor.prototype,即HTMLDivElement。

这与ECMA标准完全矛盾。

请帮助我理解这个概念......先谢谢你。

enter image description here

2 个答案:

答案 0 :(得分:3)

Chrome控制台向我显示:

  

HTMLDivElement.constructor.prototype == HTMLDivElement

它在控制台中显示为HTMLDivElement的事实并不意味着它是HTMLDivElement

另外:HTMLDivElement.constructor.prototype == HTMLElement.constructor.prototype

答案 1 :(得分:1)

HTMLDivElement被w3c定义为接口(请参阅http://www.w3.org/TR/html5/the-div-element.html#htmldivelement),因此其实现取决于浏览器供应商的不同。

在Chrome中不是一个正确的构造函数(只是尝试执行new HTMLDivElement),在Firefox中它根本不是构造函数(它是一个对象)。