在Javascript中将参数和默认值动态绑定到现有函数

Sco*_*ttS 4 javascript parameters binding arguments dynamic

假设你有一些函数someFunc()已经在javascript中定义,可能有也可能没有定义自己的参数集.是否可以编写另一个函数来添加必需的参数并将该参数设置为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);
Run Code Online (Sandbox Code Playgroud)

现在someFunc的定义大致如下:

someFunc = function(x, arg1, arg2...) {
    x = 20;
    Do stuff...
}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是不仅这个值绑定到一个函数(我已经知道如何实现),而且还将另一个对象引用绑定到同一个函数(该函数未提前知道,因为用户将定义它,但是然后用户的代码可以访问这个第二个对象引用,以便在它们自己的函数中使用).所以在我上面的简单例子中,"20"值实际上是一个对象引用.

谢谢你尽你所能的帮助.

SLa*_*aks 5

像这样:

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);
Run Code Online (Sandbox Code Playgroud)