0

我已经为此查看了其他一些示例,但是对于我正在尝试做的事情来说,它们都非常复杂,并且不了解如何将它们应用于我的问题。所以这是我希望的简单问题:

function myObject(){
this.aVar  = 0;

var aFunction = function(aParam){
    console.log(aParam);
}

this.theCallerFunction = function(){
    setTimeout(function(){ aFunction(this.aVar)},5000);
}

}

问题是在 aFunction 内部,参数值是“未声明”,而不是 0,因此我打印的是“未声明”。有人可以给我一个简单的解决方案和解释这里发生了什么吗?

多年来,我一直在做面向对象的 c# 和 java,而 oo 在 javascript 中正在努力。

4

1 回答 1

3

你有几个选择。您可以.bind()在现代浏览器中使用或放入this可以访问的变量中:

function myObject(){
    this.aVar  = 0;

    var aFunction = function(aParam){
        console.log(aParam);
    }

    // save copy of this that can be accessed from callback
    var self = this;
    this.theCallerFunction = function(){
        setTimeout(function(){ aFunction(self.aVar)},5000);
    }
}
于 2013-10-13T17:51:33.530 回答