-1
// set Process
i18n.setProcess(function() {diFunctions.getI18n('http://localhost/service/i18n/page?lang=eng&group=staff') });

// Setter and getter 
this.setProcess = function( opProcess ) {  //here param opProcess is function with parameters see i18n.setProcess() line of code
        if( opProcess == undefined) 
            throw "Process is undefined";
        if( $.isFunction(opProcess) == false )
            throw "Process is not a function"
             process = opProcess;

    };
    this.getProcess = function() {
        return process;
    };

i18n.setProcess がパラメータとして param を持つ関数を setProcess に渡す方法を参照してください。

今、私が SetProcess で欲しいのはfunction() {diFunctions.getI18n('http://localhost/service/i18n/page?lang=eng&group=staff',**id**)// id が、パラメータとして setProcess に渡された関数自体に動的に追加されることです

問題 - 関数パラメーター (Url、etc、etc、id) に加えて、セットプロセスに動的に (id によって常にアクセス可能なクラス変数で定義された) id を追加したい。関数のパラメーターは大きくなる可能性がありますが、id はパラメーターとして最後に追加する必要がありますか?

かなりの数のソリューションを試しましたが、うまくいきませんでしたか? ここをチェック

4

1 に答える 1

2

これがargumentsオブジェクトの目的です..

function foo() {
    var lastArg = arguments.length ? arguments[arguments.length - 1] : 'default';
    return lastArg;
}

foo();     // "default"
foo(1);    // 1
foo(1, 2); // 2

最後に引数のみを貼り付けるのと同様の関数を書きたい場合はbind、次のことができます

function appendArguments(fn) {
    var slice = Array.prototype.slice.call.bind(Array.prototype.slice),
        args = slice(arguments, 1);
    return function () {
        return fn.apply(this, slice(arguments).concat(args));
    };
}

var bar = appendArguments(foo, 3);
bar();     // 3
bar(4, 5); // 3 (because it's calling `foo(4, 5, 3)`
于 2013-10-31T15:14:26.537 に答える