关于节点元素,HTMLElement,文档,HTMLDocument EventTarget
About Node,Element,HTMLElement,Document,HTMLDocument,EventTarget
我不明白上面的名字到底代表什么。MDN将其称为interfaces
。它们似乎既不是DOM nodes
,因为属性如parentNode和nodeType不应用,也不是javascript对象。
从另一方面来看,它们出现在DOM对象的原型链中:例如document-->HTMLDocument.prototype-->Document.prototype-->Node.prototype...
那么,它们到底是什么?
最后,一些会让我发疯的东西。让我们以HTMLElement.prototype为例。那就是HTMLElement.prototype.hasOwnProperty('title')
是正确的。然而HTMLElement.prototype.title
返回Uncaught TypeError: Illegal invocation(…) Chrome Developer Tools!!这个悖论有什么合理的解释吗?
谢谢
它们是对象(即Object类型的成员)。更具体地说,是宿主对象(即由宿主环境提供)。
没有悖论。
例如,您可以在所有节点上访问它们的parentNode
。该属性不是每个节点自己的属性,而是从Node.prototype
继承的。属性Node.prototype.parentNode
被定义为一个访问器属性(getter/setter)。
然后,当您执行类似document.body.parentNode
的操作时,将以document.body
作为this
的值调用getter。然而,当您使用Node.prototype.parentNode
时,getter接收Node.prototype
作为this
值,它不是一个节点。所以它抛出。
你也可以称它们为"接口",因为它们在W3C规范中被定义为IDL接口。例如,Node
在DOM规范中定义。
接口,或原型声明。
要访问某物的属性,你需要一个实例。
在这个例子中,是一个HTMLElement的实例。然后可以查询HTMLElement.title.
请注意,在Javascript中,对象和接口实际上是函数,但并不总是被调用。
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 关于节点元素,HTMLElement,文档,HTMLDocument EventTarget