如何在 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 中取消移位或添加到参数对象的开头的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中取消特定事件?

当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)

如何添加返回或取消按钮以关闭 UIDocumentBrowser

如何删除或取消设置 Javascript 变量 [重复]

如何取消注释或在 XML/配置文件中添加一行?

如何检查PKAddPassesViewController中是否按下了取消或添加按钮