0

次のコードを実行しようとしています。

for (var i = 0; i <= 9; ++i) {
    State.prototype["button" + i.toString()] = function () {
        console.log("I am a digit button" + i.toString());
        this.setValue(i.toString());
    };
}

ただし、i変数は作成されたすべての関数に共通であるため、これは誤りです。たとえば、関数State.prototype.button0()を次のように機能させたいとします。

console.log("I am a digit button" + "0");
this.setValue("0");

どうやってするの?

4

1 に答える 1

1

iの値が変更されないように、関数に渡します。

for (var i = 0; i <= 9; ++i) {
    (function(i){
        State.prototype["button" + i.toString()] = function () {
            console.log("I am a digit button" + i.toString());
            this.setValue(i.toString());
        };
    })(i);
}
于 2013-03-26T10:33:22.437 に答える