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 を何年もやっていますが、JavaScript の oo に頭を悩ませています。

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 に答える