首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOM对象中的继承和原型链

DOM对象中的继承和原型链
EN

Stack Overflow用户
提问于 2017-02-17 04:13:35
回答 1查看 180关注 0票数 1

我只需要一些解释,没有任何代码样本。我知道什么是对象、构造函数和原型。我就是搞不懂HTMLElementHTMLDivElement,或者HTMLMediaElementHTMLVideoElement之间的关系。我知道有一些像prototype chain这样的东西,对象可以访问其构造函数的原型。但是HTMLDivElement构造函数是Function(),而不是HTMLElement(),另一方面,在HTMLVideoElement中,我可以访问HTMLMediaElement prototype的所有方法和属性。如果有人能帮我澄清一下,我将不胜感激。所以总而言之,function HTMLDivElement(),->,function HTMLElement(),->,function Element(),->,function Node(),->,function Object()之间的关系是什么,是什么创造了链条。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-17 04:45:42

在Javascript中,用户创建的对象与平台(例如web浏览器)提供的对象之间存在差异。The former are known as "native objects" and the latter as "host objects".

对于constructorprototype,原生对象可能具有有用的值。宿主对象通常不会,因为你不能以同样的方式构造它们。

实际的属性查找是使用内部原型属性完成的。这可以通过使用Object.getPrototypeOf__proto__属性找到。您可以通过检查这些来查看原型链。请注意,__proto__的可读性要强得多,并且很可能在现代web浏览器中工作,但Object.getPrototypeOf是规范推荐的方法。

例如,假设vid是对视频节点的引用:

代码语言:javascript
复制
vid.__proto__ // the HTMLVideoElement object
vid.__proto__.__proto__ // the HTMLMediaElement object
vid.__proto__.__proto__.__proto__ // the HTMLElement object

// or equivalents

Object.getPrototypeOf(vid) // the HTMLVideoElement
Object.getPrototypeOf(Object.getPrototypeOf(vid)) // the HTMLMediaElement object
Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(vid))) // the HTMLElement object

它一直延伸到

代码语言:javascript
复制
vid.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ // === Object.prototype

// or

Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(vid)))))))

查看“真实”原型链的方法就是使用这种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42283709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档