2011-01-09 4 views
0

は、このコードを見て:は、「これは」OOPイベントに

<script type = "text/javascript"> 
    function mouseClick (container) { 
     container.appendChild (document.createTextNode ("Can you show me ? Try clicking anywhere.")); 

     this.tryShowMe = "Yes man ! You can !" 

     window.addEventListener ("click", function (event) { 
      var ok = typeof this.tryShowMe === "undefined" ? "No, you can't." : this.tryShowMe; 

      alert (ok); 
     }, false); 
    } 

    window.addEventListener ("load", function() { 
     new mouseClick (document.body); 
    }, false); 
</script> 

「this.tryShowMeは、」要素「ウィンドウ」を意味し、その代わり、私は、オブジェクトを参照します。それをしてもいいですか ? JavaScriptでよくある落とし穴です

おかげ

+0

'objectName.tryShowMe'を使用できませんか? –

答えて

2

は、そのためのウィンドウがwindowに設定されている機能の中thisにつながる機能を、呼び出しているwindowにイベントリスナーを追加しています。

thisはあなたが別の関数内foo()のようなプレーンな関数を呼び出した場合でも、fooの内部thisはグローバルオブジェクトにデフォルト設定されます、JavaScriptで外側のスコープを参照することはありません。

あなたはあなたはそれへの参照を保持する必要がありthis外側にアクセスする場合は

someObject.method = function() { 
    var that = this; 
    function test() { 
     that; // refers to someObject 
     this; // refers to window 
    } 
    test(); 
} 

thisの可能な値と落とし穴の概要については、見hereを取ります。

関連する問題