2011-01-28 5 views
2

나는 만들고있는 게임에 멀티 플레이어 확장 기능을 구현하려고합니다. XMLHttpRequest 후에는 게임 ID, 즉 멀티 플레이어 세션의 ID가 반환됩니다. 이 this.gameID = parseInt(text) 사용할 수없는 것 때문에,함수를 사용하여 개체의 멤버를 설정하지 못했습니다.

var Multiplayer = { 
    baseURL: 'http://127.0.0.1:8888/m', 
    gameID: -1, 

    create: 
    function() { 
     $.get(this.baseURL, {'a':'c'}, function(text) { 
      this.gameID = parseInt(text); 
     }); 
    } 
} 

그것은 실패

나는 멀티 플레이어가 정적 클래스 인 다음 코드를 사용하고 있습니다. Multiplayer.gameID = parseInt(text)으로 변경하면 매력처럼 작동합니다.

Multiplayer.gameID은 모두 쓸 수 있고 읽을 수 있지만 this.gameID은 정의되지 않은 것 같습니다.

맞습니까? 그렇다면 왜 그런가요?

답변

2

자바 스크립트에는 클래스가 없으며 this은 C++ 또는 Java 배경에서 예상대로 동작하지 않습니다. 이에 생성 기능을 변경해보십시오 :

function() { 
    var that = this; 
    $.get(this.baseURL, {'a':'c'}, function(text) { 
     that.gameID = parseInt(text); 
    }); 
} 

핵심 포인트는 모든 함수는() 특정 this 값으로 호출되어 있으며,이 바깥 쪽 함수의 같은 값되지 않을 수 있습니다.

+0

'console.log (this)'를 사용했지만 Multiplyer 객체는 반환하지 않고 대신 JQuery AJAX 클래스를 반환했습니다. 솔루션을 가져 주셔서 감사합니다. – pimvdb

관련 문제