【问题标题】:How to unshift or add to the beginning of arguments object in JavaScript如何在 JavaScript 中取消移位或添加到参数对象的开头
【发布时间】:2013-11-23 16:26:17
【问题描述】:

我刚刚学会了convention for popping off the first element of the arguments array(我也学会了实际上是Object)。现在我需要做相反的事情。我需要使用unshift 操作将值添加到arguments 数组的开头(或Object 像数组一样)。这可能吗?我试过了:

Array.prototype.unshift.apply('hello', arguments);

这对arguments 没有任何影响。

【问题讨论】:

  • 您不能修改arguments 集合。您可以修改参数值,但不能修改集合的长度等。
  • @Pointy:是的,你可以修改它的长度。
  • @BlueSkies 是的,抱歉;我的意思是你不能像数组一样把它弄乱。更改数组的长度会影响新长度之后的数组元素,方法是使它们成为undefined,但更新arguments 对象的长度不会这样做。我应该更清楚地表达我的评论。

标签: javascript arrays arguments javascript-objects argument-passing


【解决方案1】:
  1. 使用.call()而不是.apply()来调用unshift()

  2. arguments设置为this的值unshift()

  3. 'hello'设置为unshift()的参数


Array.prototype.unshift.call(arguments, 'hello');

正如@lonesomeday 所指出的,您可以使用.apply() 而不是.call(),但您需要传递一个类似数组的参数作为第二个参数。因此,在您的情况下,您需要将 'hello' 包装在一个数组中。

【讨论】:

  • 你也可以apply(arguments, ['hello']).
  • 这在 Chrome 中给了我一个奇怪的结果:['hello', 'argument1', undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
猜你喜欢
  • 2014-08-14
  • 2013-10-27
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 2016-05-23
相关资源
最近更新 更多