런타임시 발생하는 정의되지 않은 오류

Realtebo

사용에 대한 링크 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;

오류는 '컴파일'시간이 아니라 런타임에 발생합니다 (용어를 용서 해주세요) . 콘솔 로그에서 ab. 하지만 c.

this.status.NOT_INITIALIZEDin이 init아닌 명시 적으로 사용할 수있는 이유는 무엇 onNotInitialized입니까?

코드 박스

문제는 JavaScript가 this변수를 바인딩하는 방식과 관련이 있습니다 . 전체 규칙은 매우 복잡 하지만 코드가 실패하는 이유 onNotInitialized는 jQuery on()메서드 를 통해 메서드를 호출 할 때 개체에 this바인딩되지 않고 game트리거 한 요소에 바인딩되기 때문입니다. 행사.

다음과 같이 bind () 함수를 사용하여 문제를 해결할 수 있습니다 .

$(this._selector).on(this.status.NOT_INITIALIZED, this.onNotInitialized.bind(this));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

'경고'는 정의되지 않은 JavaScript 런타임 오류입니다.

분류에서Dev

Me.ListBox1.Clear에서 런타임 오류 '-2147467259 (80004005)'발생 : 지정되지 않은 오류

분류에서Dev

임시 저장되지 않은 통합 문서를 참조하는 문제-런타임 오류 438

분류에서Dev

Ionic 2/3 : 런타임 오류 : 정의되지 않은 속성

분류에서Dev

실행되지 않은 Swift 3 코드가 런타임 오류를 발생시키는 이유는 무엇입니까?

분류에서Dev

선언되지 않은 변수를 사용하는 런타임 오류, C ++

분류에서Dev

Python Multiprocessing 모듈 프로세스는 런타임 오류를 발생시키고 아무것도하지 않습니다.

분류에서Dev

문제가 발생하지 않은 후 "런타임 오류 '2293': Microsoft Access에서이 전자 메일 메시지를 보낼 수 없습니다."

분류에서Dev

런타임에 "해결되지 않은 컴파일 문제"가 발생하는 대신 컴파일 오류에 실패합니다.

분류에서Dev

내 프로그램이 spoj에서는 런타임 오류가 발생하지만 ideone에서는 발생하지 않는 이유를 알 수 없습니다.

분류에서Dev

TypeScript가 정의되지 않은 유형에 대해 컴파일 오류를 발생시키지 않는 이유

분류에서Dev

정의되지 않은 ID를 표시하는 jQuery 오류

분류에서Dev

VS에 연결된 데이터베이스에 액세스하지만 데이터가 표시되지 않고 런타임 오류가 발생합니다.

분류에서Dev

Microsoft VBscript 런타임 오류 : 개체 필요 : '[string : "" "new 1.cmd" ""]'. 정확히 이런 일이 발생하는지 확실하지 않음

분류에서Dev

JavaScript 런타임 오류 : Windows 앱 개발에서 '$'가 정의되지 않았습니다.

분류에서Dev

이 코드가 컴파일되는 이유와 실행시 런타임 오류가 발생하는 이유

분류에서Dev

정의되지 않은 오프셋 : 3 오류가 발생하지만 오류 위치가 표시되지 않습니다.

분류에서Dev

Linux에서만 발생하는 opencv 정의되지 않은 참조 오류

분류에서Dev

JS 코드를 실행하는 동안 정의되지 않은 오류 발생

분류에서Dev

getelementsbyclassname이 Excel vba에 있는지 확인하십시오. 런타임 오류 91 개체 변수 또는 블록 변수가 설정되지 않음

분류에서Dev

Outlook 개체를 만들 때 배포 시스템에서 발생하는 지정되지 않은 오류

분류에서Dev

Vue2 지시문 및 클릭하면 정의되지 않은 오류 발생 (TypeScript)

분류에서Dev

정의되지 않은 배열에 대해 오류를 발생시키는 배열 크기의 투영

분류에서Dev

Swift 인터프리터가 런타임 오류를 발생시키는 인스턴스에 대해 메모리 위치를 제공하지만 클래스 이름은 제공하지 않는 이유는 무엇입니까?

분류에서Dev

Word- VBA- 런타임 오류 451 "속성 Let 프로 시저가 정의되지 않았고 속성 가져 오기 프로 시저가 개체를 반환하지 않았습니다"가 표시되는 이유는 무엇입니까?

분류에서Dev

존재하지 않는 HashSet에서 요소를 제거하려고 할 때 런타임 오류가 발생하지 않는 이유는 무엇입니까?

분류에서Dev

자바 스크립트 런타임 오류 '표시'가 정의되지 않았습니다.

분류에서Dev

페이지에서 JavaScript 런타임 오류 발생 : '함수 이름'이 정의되지 않았습니다. IE10 만

분류에서Dev

재 할당 유효하지 않은 포인터 런타임 오류

Related 관련 기사

  1. 1

    '경고'는 정의되지 않은 JavaScript 런타임 오류입니다.

  2. 2

    Me.ListBox1.Clear에서 런타임 오류 '-2147467259 (80004005)'발생 : 지정되지 않은 오류

  3. 3

    임시 저장되지 않은 통합 문서를 참조하는 문제-런타임 오류 438

  4. 4

    Ionic 2/3 : 런타임 오류 : 정의되지 않은 속성

  5. 5

    실행되지 않은 Swift 3 코드가 런타임 오류를 발생시키는 이유는 무엇입니까?

  6. 6

    선언되지 않은 변수를 사용하는 런타임 오류, C ++

  7. 7

    Python Multiprocessing 모듈 프로세스는 런타임 오류를 발생시키고 아무것도하지 않습니다.

  8. 8

    문제가 발생하지 않은 후 "런타임 오류 '2293': Microsoft Access에서이 전자 메일 메시지를 보낼 수 없습니다."

  9. 9

    런타임에 "해결되지 않은 컴파일 문제"가 발생하는 대신 컴파일 오류에 실패합니다.

  10. 10

    내 프로그램이 spoj에서는 런타임 오류가 발생하지만 ideone에서는 발생하지 않는 이유를 알 수 없습니다.

  11. 11

    TypeScript가 정의되지 않은 유형에 대해 컴파일 오류를 발생시키지 않는 이유

  12. 12

    정의되지 않은 ID를 표시하는 jQuery 오류

  13. 13

    VS에 연결된 데이터베이스에 액세스하지만 데이터가 표시되지 않고 런타임 오류가 발생합니다.

  14. 14

    Microsoft VBscript 런타임 오류 : 개체 필요 : '[string : "" "new 1.cmd" ""]'. 정확히 이런 일이 발생하는지 확실하지 않음

  15. 15

    JavaScript 런타임 오류 : Windows 앱 개발에서 '$'가 정의되지 않았습니다.

  16. 16

    이 코드가 컴파일되는 이유와 실행시 런타임 오류가 발생하는 이유

  17. 17

    정의되지 않은 오프셋 : 3 오류가 발생하지만 오류 위치가 표시되지 않습니다.

  18. 18

    Linux에서만 발생하는 opencv 정의되지 않은 참조 오류

  19. 19

    JS 코드를 실행하는 동안 정의되지 않은 오류 발생

  20. 20

    getelementsbyclassname이 Excel vba에 있는지 확인하십시오. 런타임 오류 91 개체 변수 또는 블록 변수가 설정되지 않음

  21. 21

    Outlook 개체를 만들 때 배포 시스템에서 발생하는 지정되지 않은 오류

  22. 22

    Vue2 지시문 및 클릭하면 정의되지 않은 오류 발생 (TypeScript)

  23. 23

    정의되지 않은 배열에 대해 오류를 발생시키는 배열 크기의 투영

  24. 24

    Swift 인터프리터가 런타임 오류를 발생시키는 인스턴스에 대해 메모리 위치를 제공하지만 클래스 이름은 제공하지 않는 이유는 무엇입니까?

  25. 25

    Word- VBA- 런타임 오류 451 "속성 Let 프로 시저가 정의되지 않았고 속성 가져 오기 프로 시저가 개체를 반환하지 않았습니다"가 표시되는 이유는 무엇입니까?

  26. 26

    존재하지 않는 HashSet에서 요소를 제거하려고 할 때 런타임 오류가 발생하지 않는 이유는 무엇입니까?

  27. 27

    자바 스크립트 런타임 오류 '표시'가 정의되지 않았습니다.

  28. 28

    페이지에서 JavaScript 런타임 오류 발생 : '함수 이름'이 정의되지 않았습니다. IE10 만

  29. 29

    재 할당 유효하지 않은 포인터 런타임 오류

뜨겁다태그

보관