0

変数とメソッドを使用してオブジェクトを宣言しました。ここでは簡略化されています

var myObj = {
    myTimer: null,
    startTimer: function(){
        clearTimeout(myObj.myTimer);
        myObj.myTimer = setTimeout("myObj.myFunction()", 250);
    },
    myFunction: function(){
        alert('Hi');
    }
};

startTimerが呼び出された後、次のエラーがコンソールに出力されます

Uncaught ReferenceError: myFunction is not defined
Uncaught ReferenceError: startTimer is not defined

どうすればこれを解決できますか?

4

2 に答える 2

2

setTimeout文字列の代わりに関数を渡す必要がthisあり、オブジェクト名の代わりに使用することをお勧めします。

var myObj = {
    myTimer: null,
    startTimer: function(){
        clearTimeout(this.myTimer);
        this.myTimer = setTimeout(this.myFunction, 2500);
    },
    myFunction: function(){
        alert('Hi');
    }
};

ここに作業中のフィドルがあります:http://jsfiddle.net/vyshniakov/fpZBa/

于 2012-10-16T11:46:43.853 に答える
0

私のコードには実際には何の問題もありませんでしたが、おそらくもっときれいかもしれません。

問題は、オブジェクト自体ではなく、メソッドを呼び出す方法でした。

于 2012-10-16T11:55:38.527 に答える