Javascript にはクラスがないことはわかっています。便宜上、コンストラクター関数をクラスと呼んでいます。
InputHandler
Javascriptで呼ばれるクラスを作っています。というメソッドがあり、onMouseDown
次のようにイベント ハンドラーとして登録します。
Irenic.InputHandler.prototype.attach = function()
{
var inputHandler = this; //Get the instance of InputHandler
document.addEventListener("keydown", inputHandler.onKeyDown, false); //Concentrate on this, but the question applies to all of these.
document.addEventListener("keyup", inputHandler.onKeyUp, false);
document.addEventListener("mousemove", inputHandler.onMouseMove, false);
document.addEventListener("mouseup", inputHandler.onMouseUp, false);
document.addEventListener("mousedown", inputHandler.onMouseDown, false);
}
(Irenic
は私が構築しているエンジンの名前であり、これらすべてのクラスを持つグローバル オブジェクトでもあります。)
メソッドは次のinputHandler.onMouseDown
ようになります。
Irenic.InputHandler.prototype.onMouseDown = function(event) { var inputHandler = this; //悲しいことに、これはドキュメントを参照しており、InputHandler のインスタンスではありません
console.log(inputHandler); //Logs #document
if (event.button == 0)
{
inputHandler.mouse.lmb = true;
}
if (event.button == 1)
{
inputHandler.mouse.wheel = true;
}
if (event.button == 2)
{
inputHandler.mouse.rmb = true;
}
}
コメントで述べたように、this
キーワードはイベントが発生した要素を参照します。私は明らかにそれを望んでいませんInputLoader
。