如何在 JavaScript 中取消移位或添加到参数对象的开头
Posted
技术标签:
【中文标题】如何在 JavaScript 中取消移位或添加到参数对象的开头【英文标题】:How to unshift or add to the beginning of arguments object in 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
对象的长度不会这样做。我应该更清楚地表达我的评论。
【参考方案1】:
使用.call()
而不是.apply()
来调用unshift()
将arguments
设置为this
的值unshift()
将'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]
以上是关于如何在 JavaScript 中取消移位或添加到参数对象的开头的主要内容,如果未能解决你的问题,请参考以下文章
当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)