我正在尝试执行以下代码:
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");
怎么做?
答案 0 :(得分: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);
}