假设您已经在javascript中定义了一些函数someFunc(),该函数可能会也可能不会定义自己的参数集。是否可以编写另一个函数来添加必需的参数并将该参数设置为someFunc()的默认值?就像是:

var someFunc = function(arg1, arg2 ...){ Do stuff...}
var addRequired = function(argName, argValue, fn) {
    Add the required default arg to a function...
}

addRequired("x", 20, someFunc);

现在someFunc大致定义如下:
someFunc = function(x, arg1, arg2...) {
    x = 20;
    Do stuff...
}

我真正想要的是不仅要将此值绑定(bind)到一个函数(我已经知道如何实现),而且还要将另一个对象引用绑定(bind)到该相同的函数(该函数不会被用户提前知道)定义它,但是用户代码可以访问此第二个对象引用以在其自己的函数中使用)。因此,在上面的简单示例中,“20”值实际上是对象引用。

谢谢你尽你所能的帮助。

最佳答案

像这样:

function addParameter(func, argIndex, argValue) {
    return function() {
        arguments[argIndex] = argValue;
        arguments.length = Math.max(arguments.length, argIndex);
        return func.apply(this, arguments);
    };
}

someFunc = function(x, arg1, arg2...) {
    Do stuff...
}
someFunc = addParameter(someFunc, 0, someValue);

09-26 10:51