注: コードは長く見えますが、デモ用の単純な疑似コードです。逃げるな!
キーの押下をリッスンするウィジェットを作成しました。onKeyDown
イベントが発生すると、への参照がthis
失われます。self
そこで、ウィジェットを参照するために 呼び出されるスコープ変数を設定しました。self
ウィジェットの作成時に初期化されます。
これは機能しますが、これが正しいアプローチであるかどうかはわかりません。ここでの解決策は、プロキシを使用することだと思いますか? おそらく、self
変数はすでにプロキシとして機能していますか? 何が起こっているのかを明らかにしたい人はいますか?
(function($)
{
var vendorPrefix = Modernizr.prefixed("transform");
var self;
$.widget("ui.myWidget", {
_create: function()
{
self = this;
//Do some widget stuff
document.addEventListener('keydown', this.onKeyDown, false)
return this;
},
exampleFn: function()
{
},
onKeyDown: function(event)
{
// this now refers to "document" and not the widget
switch(event.keyCode)
{
case 37:
self.exampleFn();
break;
case 39:
self.exampleFn();
break;
}
}
});
})(jQuery);