2012-08-14 4 views
0

객체 리터럴 내에서 "@"(this)가 직접 객체가 아닌 객체를 참조하는 이유를 아는 사람이 있습니까?잘못된 객체가 참조에서 반환 됨

class Example extends Backbone.View 
    render: -> 
    test = 
     num: 10 
     nextNum: @num + 1 # References "Example" not "test" 

답변

1

당신은 Hash 생성자를 호출하고 생성자에게 params를 보내고 있습니다. 난 당신이 명확하게 this는 외부 객체가 아니라 test 인스턴스 자체에, 사이 참조를하고있다 볼 수 있습니다 위의 예에서 생각

var test = new Hash({ num: 10, nextNum: this.num + 1 }); 

:이 유사한이 코드 (어쩌면 더 같은)를 참조하십시오 test 인스턴스가 아직 만들어지지 않았기 때문에 다른 것들. 당신이 위의 예에서

이 같은 문제를 해결하는 것입니다 :

var num = 10; 
var test = new Hash({ num: num, nextNum: num + 1 }); 

그래서 난 당신이 비슷한 방법으로 그것을 해결해야한다고 생각 사건이 이동 :

class Example extends Backbone.View 
    render: -> 
    num = 10 

    test = 
     num: num 
     nextNum: num + 1 
관련 문제