在回调中为对象的属性/变量赋值

时间:2013-03-18 09:27:07

标签: javascript

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

1 个答案:

答案 0 :(得分:0)

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

检查this jfFiddle是否有正确的结果。

相关问题