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 和 other 是 var1=val3 ,但是 this.var1 总是返回 val2 而不是 val3

在此处输入图像描述

4

1 回答 1

0

实际上,该值在您的代码中设置为“var3”。但是在您的演示中,控制台打印“var2”是因为该console.log()触发比该 setTimeout() 更早。打印出来后变量会发生变化。

检查这个 jfFiddle以获得正确的结果。

于 2013-03-18T10:42:58.997 回答