.slice(0)在这里有什么意义?

我正在研究jQuery源代码(v1.5行2295):

namespace = new RegExp("(^|\\.)" + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); 

我的问题是,为什么在这里使用slice(0)

sort()修改了它所调用的数组 – 这是不是很好,去绕过其他代码可能依赖的东西。

slice()总是返回一个新数组 – slice(0)返回的数组与input相同,这基本上意味着它是一个复制数组的廉价方法。

arr.slice(0)通过从索引0处的元素到最后一个元素创build一个原始数组的副本。

它也被用来将类似数组的对象转换成数组。 例如,DOM NodeList (由多个DOM方法(如getElementsByTagName )返回)不是一个数组,而是一个具有length字段的类似数组的对象,可以在JavaScript中进行索引。 要将其转换为数组,通常使用:

 var anchorArray = [].slice.call(document.getElementsByTagName('a'), 0) 

slice(0)允许你返回你引用的现有数组的数组,在这里是命名空间。

除了什么@阿农说:

slice()方法select从给定的开始参数开始的元素,并结束于(但不包括)给定的结束参数。

例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 

更多信息可以在这里find。