사용에 대한 링크 this
가 jQuery입니다. 예, 문제는 정확히 이것이지만이 상황은 완전히 다른 상황이므로 다른 질문에 대한 쓸모없는 링크를 제거하고 더 간단한 상황을 찾는 가난한 SO 사용자에게 혼란을 줄 수 있으므로 중복으로 표시하십시오.
또한 : 내 코드는 스 니펫이 아니라 여기에 완전히 붙여 넣었고, 내 코드는 복잡한 바인딩을 전혀 사용하지 않고 있습니다. 그래서 그것은 저에게 완전히 새로운 질문입니다.
이것은 내 전체 작업 코드입니다.
var game = {
status : {
NOT_INITIALIZED : "gamepad:not_initialized",
INITIALIZED : "gamepad:initialized",
},
_selector : null,
_status : null,
init : function( gamepad_selector ) {
this._selector = gamepad_selector;
$(this._selector).on(this.status.NOT_INITIALIZED, this.onNotInitialized);
this.setState(this.status.NOT_INITIALIZED); // just to force the first console log
$(this._selector).on(this.status.INITIALIZED, this.onInitialized);
this.setState(this.status.INITIALIZED);
},
setState : function ( new_status ) {
this._status = new_status;
$(this._selector).trigger(new_status);
},
onNotInitialized: function () {
console.log("onNotInitialized()");
},
onInitialized: function () {
console.log("onInitialized()");
},
}
진입 점은에 대한 호출 game.init()
입니다.
온 것을 주 init
기능, 내가 호출 할 수있는 setState
미리 정의 된 상태 중 하나를 사용하여. 작동합니다.
this.setState(this.status.NOT_INITIALIZED);
의 사용을 피하려고 this.setState
했기 때문에이 함수를 삭제 this._state
하고 이벤트 리스너에 직접 설정하려고했습니다 .
이것은 작동하지 않는 코드 의 중요한 부분입니다 .
init : function( gamepad_selector ) {
....
console.log ("a");
$(this._selector).on(this.status.NOT_INITIALIZED, this.onNotInitialized);
console.log ("b");
$(this._selector).trigger(this.status.NOT_INITIALIZED)
console.log ("c");
....
},
onNotInitialized: function () {
// I can't do this: throws an error
this._status = this.status.NOT_INITIALIZED;
console.log("onNotInitialized()");
},
문제 : 런타임에이 오류가 발생했습니다.
Cannot read property 'NOT_INITIALIZED' of undefined
~와 연관되다
this._status = this.status.NOT_INITIALIZED;
오류는 '컴파일'시간이 아니라 런타임에 발생합니다 (용어를 용서 해주세요) . 콘솔 로그에서 a
및 b
. 하지만 c
.
this.status.NOT_INITIALIZED
in이 init
아닌 명시 적으로 사용할 수있는 이유는 무엇 onNotInitialized
입니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다