コールバックを登録し、イベントに基づいて反復するイベント ハンドラーを作成しようとしています。
初期の実用的な例は次のようなものです。
var elt = document.getElementById("square"),
clickCount = 0;
// call a priviledged method with access to prviate vars from
// outer scope
var count = function () {
clickCount += 1;
alert("you clicked me " + clickCount + " times!");
};
elt.addEventListener("click", count, false);
今、私は実際に使用できる何か js を書きたいと思っています。現在の構築は次のとおりです。
//Create a class object
function CountMe () {
//privately scoped variables
var clickCount = 0;
//methods on 'class' CountMe
this.countClick = function () {
//who's context am I in?
this.addCount();
alert("you clicked me " + clickCount + " times!");
};
this.addCount = function() {
clickCount += 1
};
};
// Create an instance of countMe class
var clickMe = new CountMe();
//Add an event listener for clicks
document.getElementById("square").addEventListener("click", clickMe.countClick ,false)
私が受け取ったエラーはUncaught TypeError: Object #<CountMe> has no method 'addEventListener'
、次のような html ページが与えられた場合です。
<html>
<body>
<div style="width:50px; height:50px; background-color:red;" id="square">
</div>
</body>
</html>
私の質問は次のとおりです。
onclick
イベントが最初のメソッドと同じように機能するようにするには、これをどのように構築する必要がありますか?- メソッド
countClick
では、ネストされた this はどのコンテキストにありますか? 私が疑うクラスのインスタンスは、CountMe
他の誰かのテイクが欲しいだけです。