Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript querySelector:返回类型是什么?_Javascript_Inheritance_Selectors Api - Fatal编程技术网

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,。