当我找到jQuery源时(v1.5第2295行),我正在研究它:
namespace = new RegExp("(^|\\.)" +
jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
我的问题是,为什么slice(0)
在这里使用?
Answers:
arr.slice(0)
通过从索引0的元素到最后一个元素进行切片来复制原始数组。
它还用于将类似数组的对象转换为数组。例如,DOM NodeList
(由多个DOM方法返回getElementsByTagName
)不是数组,而是具有length
字段的类似数组的对象,并且可以在JavaScript中建立索引。要将其转换为数组,通常使用:
var anchorArray = [].slice.call(document.getElementsByTagName('a'), 0)
const nav = Array.prototype.slice.call(document.querySelectorAll('.nav'), 0);
为什么使用Array.prototype比[]更好?
除了@Anon说的:
该slice()
方法选择从给定start参数开始的元素,并以给定end参数结束但不包括给定end参数的元素。
范例1:
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);
柑橘的结果将是:
Orange,Lemon
范例2:
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(-3, -1);
柑橘的结果将是:
Lemon,Apple
可以在此处找到更多信息。
["Lemon", "Apple"]
是准确的。我们都知道会发生什么slice()
。Stackoverflow不适用于重新编写文档。问题在于重点是什么slice(0)
。在这种情况下,您的问题根本无法回答。