我正在使用Firefox Scratchpad执行Javascript
,并想在我的setTimeout
函数(或任何异步执行的函数)内获取全局索引。由于数据的顺序必须保持按顺序执行的方式,因此无法使用Array.push
。以下是我的代码:
function Demo() {
this.arr = [];
this.counter = 0;
this.setMember = function() {
var self = this;
for(; this.counter < 10; this.counter++){
var index = this.counter;
setTimeout(function(){
self.arr[index] = 'I am John!';
}, 100);
}
};
this.logMember = function() {
console.log(this.arr);
};
}
var d = new Demo();
d.setMember();
setTimeout(function(){
d.logMember();
}, 1000);
我想让我的 d.arr
数组有 0 - 9 的索引,每个索引都包含字符串 'I am John!'
,但只有第 9 个索引包含字符串 'I am John!'
。我认为将 this.counter
保存到本地变量 index
中会对 this.counter
进行快照。请问有谁能帮我理解一下我的代码错在哪里吗?
function(result, status)
。那么我们如何使用bind呢? - Prakhar MishraFunction.prototype.call
一样使用它。所以你可以这样做fn.bind(context, firstParam, secondParam, thirdParam)
等等。 - Tim