1

次の方法で、匿名関数でオブジェクトのメンバー関数にアクセスしようとしています-

  function a()
    {
      this.memb = 10;
    }

    a.prototype.hide_member = function(id){
      alert(id);
    }

    a.prototype.show_member = function(){
      setTimeout('this.hide_member(this.memb)', 2000); //Problem 1
      setTimeout(this.hide_member(this.memb), 2000); //Problem 2
      setTimeout(alert(this.memb), 2000);  //Problem 3
      this.memb++;
    }

    var obj = new a();
    obj.show_member();

ここで、問題 1 -与えられた正確なタイミングでコードが実行され、2000 ミリ秒の直後を意味しますが、2000 ミリ秒後に次のエラーが表示されます -

Uncaught TypeError: Object [object global] has no method 'hide_member'
(anonymous function)

問題 2 -コードは実行されていますが、コードが解析された直後に実行されています。つまり、2000 ミリ秒後ではありません。

問題 3 -問題 2 と同じ問題

ここで、これら 3 つの問題について混乱しています。ありがとう

4

3 に答える 3