참고 : 코드가 길어 보이지만 데모 목적으로는 간단한 psuedo 코드입니다. 도망 가지 마!JQuery 위젯, "this"에 대한 참조가 손실 됨
키 입력을 수신하는 위젯을 작성했습니다. 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);
'자가 사용 = this' 완벽하게 유효합니다. –