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 回答