gpt4 book ai didi

javascript - .slice.call 与 .push 在 javascript 中

转载 作者:行者123 更新时间:2023-12-04 01:02:54 25 4
gpt4 key购买 nike

我的一个 friend 使用 [].slice.call() 用匹配的元素填充一个数组。

我想知道这是如何工作的。我只知道 Array.prototype.push 来填充一个数组。

我还看到两种填充数组的技术存在差异。

所以我的问题是:

  • Array.prototype.slice 如何帮助填充数组?
  • Array.prototype.sliceArray.prototype.push制作对象和数组的作用是什么?

Fiddle

var arr=[];
var arr=[].slice.call($('[id^=name]'));
//arr.push($('[id^=name]'))
console.log(arr)

最佳答案

数组的 .slice() 方法返回数组一部分的浅拷贝。它是作为 Array 原型(prototype)上的方法编写的,因此它所操作的数组是调用它的上下文中的数组。通常是这样的:

var newArray = oldArray.slice(2, 4);

当您使用.call() 调用.slice() 方法时,您可以显式控制this 的值。在您 friend 的代码中,他传递了一个 jQuery 对象作为 this 值。因为没有其他参数,.slice() 返回整个 jQuery 对象的浅拷贝,作为一个新数组。 (像其他一些类似的方法一样,.slice() 将适用于任何看起来像数组的东西:基本上,任何具有 .length 属性和数字索引属性的东西兴趣。jQuery 对象符合该描述。)

但是,由于 jQuery 已经有一个内置方法来返回所有匹配元素的普通数组,您的 friend 不应该再费心这样做了:

var plainArray = $('[id^=name]').get();

这完全一样。使用 .slice() 不是错误,但有点毫无意义。

关于javascript - .slice.call 与 .push 在 javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798983/

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