Javascript querySelector:返回类型是什么?
根据文档,Javascript querySelector:返回类型是什么?,javascript,inheritance,selectors-api,Javascript,Inheritance,Selectors Api,根据文档,querySelector返回一个元素。但是,返回值通常比该值更丰富 例如,如果我选择一个img元素,我会得到一个HTMLImageElement,根据文档,它是这个层次结构的一部分: EventTarget ← Node ← Element ← HTMLElement ← HTMLImageElement 我对继承的理解是,对象可以访问链下游的属性,但不能访问链上游的属性 这是否意味着querySelector实际上并不返回元素,而是扩展元素的众多对象之一 这是否意味着queryS
querySelector
返回一个元素
。但是,返回值通常比该值更丰富
例如,如果我选择一个img
元素,我会得到一个HTMLImageElement
,根据文档,它是这个层次结构的一部分:
EventTarget ← Node ← Element ← HTMLElement ← HTMLImageElement
我对继承的理解是,对象可以访问链下游的属性,但不能访问链上游的属性
这是否意味着querySelector
实际上并不返回元素
,而是扩展元素
的众多对象之一
这是否意味着querySelector实际上并没有返回元素,而是返回扩展元素的许多对象中的一个
作为元素子类的任何对象仍然是元素。它只是更具体的东西。当一个文档指示返回一个特定的接口(
元素
)时,逻辑上意味着实现该接口(HTMLImageElement
)的所有内容也被计算在内,否则他们必须列出所有多余的子类。HTMLImageElement
实际上实现了元素,而不是扩展它,并保留了HTMLElement
的所有属性,后者实现了元素的所有属性
对于元素
,对查询选择器
返回的对象进行的任何实例检查都是真实的,除非它为null。因此,对于querySelector,返回元素的原型是否为HTMLImageElement
类型并不重要,只要该元素实现了元素的所有属性并提供了对
元素实例
querySelector返回的元素保证具有element
的所有属性,或者为null,如果要使用其他专用属性,则必须进行自己的instanceof
检查。我可以理解该用例吗?这可能是个问题吗?恭喜你,你发现了一个叫做多态性的东西。它返回一个HTMLImageElement
,或者querySelector找到的任何东西,但是动态语言的好处是,返回类型也可以是动态的,静态语言需要你在这里输入cast,。