2017-02-21 10 views
0

私はJavaScriptのプロトタイプでちょっと新しいです。私はイベントハンドラの中でメソッドを呼び出すのに手間がかかっています。誰かが私が間違ったことを指摘する手助けをすることができましたか?コメントありがとうございます。ありがとうございます。ここで私はと呼ばれる方法がここに私のコード"Click"イベントでjavascriptプロトタイプの呼び出しメソッド

var oneStepCheckOutEnhance = Class.create(); 
oneStepCheckOutEnhance.prototype = { 
    test: function Test() {  
     alert('test'); 
    }, 

    observeShippingMethod: function() { 
     $$('dl.shipment-methods input').invoke('observe', 'click', function () { 
      this.test(); //Keep saying Uncaught TypeError: this.test is not a function    
     }); 
    },  
}; 

います:あなたはそれを呼び出している範囲で

<script type="text/javascript"> 
    var onStepEnhance = new oneStepCheckOutEnhance(); 
    onStepEnhance.observeShippingMethod(); 
</script> 

答えて

0

thisされ、それが当たった最初の関数クロージャ(クリックを扱うのIE匿名関数)、ではないがオブジェクト。あなたはそれを親オブジェクトにバインドすることができます:

var oneStepCheckOutEnhance = Class.create(); 
oneStepCheckOutEnhance.prototype = { 
    test: function Test() {  
     alert('test'); 
    }, 

    observeShippingMethod: function() { 
     $$('dl.shipment-methods input').invoke('observe', 'click', function () { 
      this.test();   
     }).bind(this); // right here, it binds the handler to the parent scope. 
    },  
}; 
+0

ああ...それは働いた。ありがとう、それは私の日を救った。 – Huynh

関連する問題