2014-10-31 2 views
1

이 내 클라이언트 JS 스크립트이것을 피하는 방법 socket.io를 사용하는 JS에서?

var Chat = function(username) { 

    that = this;    
    this.myUser = {"username":username};  
    this.socket = io(server); 

    this.socket.on('connect', function(){ 
     console.log(that.myUser); // this is UGLY but this.myUser will give an error 
    }); 
} 

"이 = 그"그 불쾌한 제거하는 방법에 대한 어떤 생각인가?

+0

'self = this' ... (농담) –

답변

3

당신은 bind()을 사용할 수

var Chat = function(username) { 

    this.myUser = {"username":username};  
    this.socket = io(server); 

    this.socket.on('connect', function(){ 
     console.log(this.myUser); 
    }.bind(this)); 
}; 

하지만 솔직히 말해서, 나는 개인적으로 생각하지 않는다,이 훨씬 낫다는 것을.

+0

@ jfriend00 좋은 지적 ... 성급한 대답 ... – Sirko

+0

나는'그 '에 대한 폐쇄를 만드는 것이 그렇게 나쁘다는 것을 묻는다. 못생긴 것? –

+0

@LeviBeckman 두 방법 모두 유효하다고 생각합니다. 개인적으로 나는 콜백의 내용을 기반으로 둘 다 사용합니다. – Sirko

관련 문제