ECMASCRIPT将原型对象定义为构造函数的原型属性。
以下内容是从ECMA-262复制的:
4.3.4 构造函数 用于创建和初始化对象的函数对象 注意构造函数的“prototype”属性的值是一个原型对象,用于实现继承和共享属性。
为什么选择HTMLDivElement.constructor.prototype == HTMLDivElement?
如果a是HTMLDivElement对象,则Object.getPrototypeOf(a)返回HTMLElement,而它应返回constructor.prototype,即HTMLDivElement。
这与ECMA标准完全矛盾。
请帮助我理解这个概念......先谢谢你。
答案 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中它根本不是构造函数(它是一个对象)。