Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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 为什么链接和脚本标记没有被类型化为元素?_Javascript_Types - Fatal编程技术网

Javascript 为什么链接和脚本标记没有被类型化为元素?

Javascript 为什么链接和脚本标记没有被类型化为元素?,javascript,types,Javascript,Types,我认为从document.getElementById或document.createElement返回的每个元素实际上都是dom元素的某个版本,可以使用typeof找到该版本。但是,我最近发现,当我尝试对script和link标记执行此操作时,情况并非如此 html 为什么将这些元素类型化为对象?typeof专门用于本机JavaScript对象。typeof返回的值非常有限 “object”响应基本上适用于任何对象,或null(这实际上不是对象…如图所示)。您可能会从任何类型的元素得到相同的

我认为从
document.getElementById
document.createElement
返回的每个元素实际上都是dom元素的某个版本,可以使用
typeof
找到该版本。但是,我最近发现,当我尝试对
script
link
标记执行此操作时,情况并非如此

html


为什么将这些元素类型化为对象?

typeof
专门用于本机JavaScript对象。
typeof
返回的值非常有限

“object”
响应基本上适用于任何对象,或
null
(这实际上不是对象…如图所示)。您可能会从任何类型的元素得到相同的响应,而不仅仅是
script
link

您可以使用
instanceof
查看元素是否是
元素
构造函数原型的一个实例

console.log(l instanceof Element); // true


请注意,像元素及其构造函数这样的对象是宿主对象。它们有时按照与本机JavaScript对象不同的规则运行,因此在测试它们的类型时可能会有一些怪癖需要处理。

它们是元素,您得到的结果与其他类型的元素相同

试试这个:

var li = document.createElement("link");
console.log(li instanceof HTMLElement);
它记录
true
,因为链接是
HTMLElement
的特化实例

但对于大多数对象(“任何其他对象”),只返回
“object”

可以使用以下方法获取对象的类型:


typeof
对任何东西都不返回“element”。@j08691-我一定搞错了。
console.log(l instanceof Element); // true
var li = document.createElement("link");
console.log(li instanceof HTMLElement);
console.log(Object.getPrototypeOf(li));