0

2番目にconsole.log()実行されたによってWSFunctions[this.name]();印刷されますundentifiedinherit DoThisAndThatどういうわけか自分の職務でできるのだろうかと思っていましたCall()WSFunctions[this.name](this.params)プロジェクトが成長している間、渡す以上のものがあるかもしれないので、私は途中でパラメータを渡したくありませんでしたthis.params

function WS(name, params) {
    this.name = name;
    this.params = params;
}

WS.prototype.Call = function() {
    if (typeof WSFunctions[this.name] !== "function") {
        return false;
    }

    console.log(this.params);
    WSFunctions[this.name]();

    return true;
}

var WSFunctions = {
    'ScreenRightGuest': function() {
        // .. whatever ..
        return true;        
    },
    'DoThisAndThat': function() {
        console.log(this.params);
        return true;
    }
}


new WS('DoThisAndThat', { login: '123', pass: 'abc' }).Call();

よろしくお願いしますマイク

4

1 に答える 1

0

[MDN]または[MDNthis ]を使用して、関数で参照する内容を明示的に設定できます。.call .apply

WSFunctions[this.name].call(this);

これは、呼び出し元(この場合はによって作成されたインスタンス)で参照されWSFunctions[this.name]thisいるものに設定された状態で呼び出します。thisnew WS(...)

仕組みを徹底的に説明しているこのページthisもご覧ください。

于 2012-08-14T14:52:38.700 に答える