Javascript 添加额外的参数

标签 javascript

让我们看一下这段代码:

var mainFunction = function() {
  altFunction.apply(null, arguments);
}

传递给 mainFunction 的参数是动态的——它们可以是 4 个或 10 个,无关紧要。但是,我必须将它们传递给 altFunction 并且我必须向参数列表添加一个 EXTRA 参数。

我试过这个:

var mainFunction = function() {
  var mainArguments = arguments;
  mainArguments[mainArguments.length] = 'extra data'; // not +1 since length returns "human" count.

  altFunction.apply(null, mainArguments);
}

但这似乎行不通。我该怎么做?

最佳答案

使用Array.prototype.push

[].push.call(arguments, "new value");

没有必要浅克隆 arguments 对象,因为它和它的 .length 是可变的。

(function() {
    console.log(arguments[arguments.length - 1]); // foo

    [].push.call(arguments, "bar");

    console.log(arguments[arguments.length - 1]); // bar
})("foo");

来自 ECMAScript 5,10.6 Arguments Object

  1. Call the [[DefineOwnProperty]] internal method on obj passing "length", the Property Descriptor {[[Value]]: len, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}, and false as arguments.

所以你可以看到 .length 是可写的,所以它会用 Array 方法更新。

关于Javascript 添加额外的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610987/

相关文章:

javascript - jQuery 仅在单击指定元素时激活 .click()

javascript - 如何从对象数组中删除元素?

javascript - "@name"的替代品,用于记录 `this` 的属性

javascript - 在背景上播放音乐/声音的方法

javascript - 如何在文件上传时显示状态消息?

javascript - React 将图像 src 设置为动态路径

javascript - 单击表单提交按钮时延迟 jQuery 删除类函数

javascript - 64 位位掩码和 javascript

javascript - 如何在 PHP 服务器端处理具有多个文件的 JavaScript 表单数据?

javascript - document.getElementByName()[0] 未定义