gpt4 book ai didi

javascript - javascript 中 [].slice.call 的解释?

转载 作者:IT老高 更新时间:2023-10-28 13:15:40 26 4
gpt4 key购买 nike

我偶然发现了这个将 DOM NodeList 转换为常规数组的简洁快捷方式,但我必须承认,我并不完全理解它是如何工作的:

[].slice.call(document.querySelectorAll('a'), 0)

所以它从一个空数组[]开始,然后slice用来将call的结果转换成一个新的数组是吗?

我不明白的是调用。这如何将 document.querySelectorAll('a') 从 NodeList 转换为常规数组?

最佳答案

这里发生的事情是你调用 slice() 就好像它是使用 call()NodeList 的函数一样。 slice() 在这种情况下所做的是创建一个空数组,然后遍历它正在运行的对象(最初是一个数组,现在是一个 NodeList)并继续附加元素将该对象复制到它创建的空数组中,该数组最终被返回。这是 article on this .

编辑:

So it starts with an empty array [], then slice is used to convert the result of call to a new array yeah?

这是不对的。 [].slice 返回一个函数对象。函数对象有一个函数call(),它调用将call()的第一个参数分配给this的函数;换句话说,让函数认为它是从参数(document.querySelectorAll('a') 返回的 NodeList)而不是从数组中调用的。

关于javascript - javascript 中 [].slice.call 的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com