当前位置: 首页 > 面试题库 >

用JavaScript解释[] .slice.call?

微生阳平
2023-03-14
问题内容

我偶然发现了将DOM NodeList转换为常规数组的简洁捷径,但我必须承认,我并不完全了解它的工作原理:

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

因此,它以一个空数组开头[],然后slice用于将结果转换call为新数组,是吗?

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


问题答案:

这里发生的是,您调用slice()它就像是NodeList使用的功能call()slice()在这种情况下,要做的是创建一个空数组,然后遍历其运行的对象(最初是一个数组,现在是一个数组NodeList),并将该对象的元素附加到其创建的空数组中,最终将其返回。

编辑:

因此,它以空数组[]开头,然后使用slice将调用结果转换为新数组,是吗?

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



 类似资料:
  • 本文向大家介绍解释&&和||在javascript中的另类用法,包括了解释&&和||在javascript中的另类用法的使用技巧和注意事项,需要的朋友参考一下 又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代

  • 问题内容: 我已经阅读了许多有关闭包和循环内闭包的解释。我很难理解这个概念。我有以下代码:有没有办法尽可能减少代码,以便可以使闭包的概念更清晰。我很难理解其中两个括号内的部分。谢谢 问题答案: 警告:长(ish)答案 这是直接从我在公司内部Wiki中写的文章中复制的: 问题:如何在循环中正确使用闭包?快速解答:使用功能工厂。 或更易读的版本: 这经常使刚接触javascript或函数式编程的人感到

  • 主要内容:1. 单行注释,2. 多行注释,3. 使用注释来阻止程序执行,4. HTML 注释注释是给开发人员看的,程序在执行时会自动忽略注释的内容,所以我们通常使用注释来为代码添加一些解释说明或描述,以提高代码的可读性。 JavaScript 中的注释与 C/ C++、 Java、 PHP 等语言中注释的定义方式相同,支持单行注释和多行注释两种风格。 1. 单行注释 单行注释以双斜杠 开头, 之后的所有内容都会看作是注释的内容,对 之前的内容则不会产生影响,示例代码如下: 注意:单行注释

  • 本文向大家介绍javascript设计模式之解释器模式详解,包括了javascript设计模式之解释器模式详解的使用技巧和注意事项,需要的朋友参考一下 神马是“解释器模式”? 先翻开《GOF》看看Definition: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 在开篇之前还是要科普几个概念: 抽象语法树: 解释器模式并未解释如何创建一个抽象语

  • 本文向大家介绍什么是JSON.stringify()并解释其在javascript中的用法?,包括了什么是JSON.stringify()并解释其在javascript中的用法?的使用技巧和注意事项,需要的朋友参考一下 JSON.stringify() 如果需要将数据发送到Web服务器,则数据应为字符串。要将对象文字更改为字符串,应使用JSON.stringify()方法。 示例1 输出结果 示例

  • 本文向大家介绍解释Apache Kafka用例?相关面试题,主要包含被问及解释Apache Kafka用例?时的应答技巧和注意事项,需要的朋友参考一下 答:Apache Kafka有很多用例,例如: Kafka指标 可以使用Kafka进行操作监测数据。此外,为了生成操作数据的集中提要,它涉及到从分布式应用程序聚合统计信息。 Kafka日志聚合 从组织中的多个服务收集日志。 流处理 在流处理过程中,