我的一个朋友[].slice.call()用来填充匹配元素的数组.
我想知道这是如何工作的.我只知道Array.prototype.push要填充数组.
我也看到两种技术填充阵列都有所不同.
所以我的问题是:
Array.prototype.slice帮助填充阵列?Array.prototype.slice和Array.prototype.push做出对象和数组?var arr=[];
var arr=[].slice.call($('[id^=name]'));
//arr.push($('[id^=name]'))
console.log(arr)
Run Code Online (Sandbox Code Playgroud)
    所述.slice()阵列的方法返回一个浅拷贝的阵列的一部分的.它是作为Array原型的一个方法编写的,因此它操作的数组就是在其上下文中调用它的数组.通常情况是这样的:
var newArray = oldArray.slice(2, 4);
Run Code Online (Sandbox Code Playgroud)
使用时调用.slice()方法.call(),可以this显式控制值.在你朋友的代码中,他传递一个jQuery对象作为this值.因为没有其他参数,所以完整地.slice()返回jQuery对象的浅表副本,作为新数组.(像其他类似的方法一样,.slice()可以处理任何看起来像数组的东西:基本上,任何具有.length属性和数字索引属性的东西.一个jQuery对象符合该描述.)
但是,由于jQuery已经有一个内置方法来返回所有匹配元素的普通数组,所以你的朋友不应该再这样做了:
var plainArray = $('[id^=name]').get();
Run Code Online (Sandbox Code Playgroud)
这完全是一回事.使用.slice()并没有错,但它有点毫无意义.