2013-03-18 3 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); 

setTimeout 콜백에서 값을 var1로 설정/지정하는 방법. val3 할당에는 영향이 없으며 스크린 샷에서 볼 수 있듯이 이제 var1이라는 두 가지 속성이 있습니다. 1 VAR1 = val2만큼이고, 다른 하나는이 var1 = val3이지만, this.var1 항상을 val2를 돌려줍니다 val3 enter image description here콜백의 객체 속성/변수에 값 할당

답변

0

실제로 값이 설정되어있는 코드에서 "VAR3"를 참조하십시오. 그러나 당신의 데모에서, 콘솔은 "var2"를 인쇄합니다. 그 이유는 console.log()이 그 setTimeout()보다 먼저 발생하기 때문입니다. 변수는 인쇄 후에 변경됩니다.

올바른 결과를 얻으려면 this jfFiddle을 확인하십시오.