2013-03-18 4 views
0
var obj1={ 
    var1:"val1", 
    init:function(){ 
     this.var1="val2"; 
     var self=this; 
     setTimeout(function(){self.var1="val3"},1); 
     setTimeout(function(){obj1.var1="val3"},1); 
    } 
} 

obj1.init(); 
console.log(obj1.var1); 
console.log(obj1); 

Как установить/присвоить значение var1 в обратном вызове setTimeout. Присвоение val3 не имеет эффекта, и, как видно на скриншоте, у нас есть два свойства, упомянутые как var1. 1 является var1 = val2 и другой var1 = val3, но this.var1 всегда возвращает val2 не val3Присвоение значения объекту/переменной объекта в обратном вызове

enter image description here

ответ

0

Фактически установлено значение "var3" в вашем коде. Но в вашей демонстрации консоль печатает «var2», потому что это console.log() огонь раньше, чем setTimeout(). После этого переменная изменяется.

проверка this jfFiddle для правильного результата.

Смежные вопросы