2014-01-13 12 views
0

안녕하세요 Im은 coffeescript에서 클래스를 만들 때 생성자의 객체에 함수를 정의하고 싶지만 범위를 계산할 수 없다는 코드 예제를 보시려면인스턴스 생성자에서 인스턴스 생성자

을 참조하십시오.
collection_of_objects = [{id:234},{id:546},{id:234}] 

class SampleObject 
    constructor: (collection_of_objects)-> 
    @posts = [] 
    @divide_number = 1337 
    for post in collection_of_objects 
     post.magicnr =()-> 
     return @id/@divide_number 

ID는 그것을 나는 getDivideNumber 기능을 만들려고 설정 얻을하지만 난 범위와 그 인해를 실현 magicnr 기능 내부에서 divide_number에서 위선적 인 말투,하지만 난 어떻게 알아낼 질수 그것을 반환하지만 나는 위의 magicnr 함수 안에서 액세스 할 수 없다.

어떤 도움이

UPDATE 을 주시면 감사하겠습니다 것은 당신이 magicnr를 정의 할 때 범위를 변경하기 때문입니다 해킹

collection_of_objects = [{id:234},{id:546},{id:234}] 

class SampleObject 
    @divide_number = 1337 
    divide_number = @divide_number 
    constructor: (collection_of_objects)-> 
    @posts = [] 
    for post in collection_of_objects 
     post.magicnr =()-> 
     return @id/divide_number 
    # for updating the @divide_number 
    setDivnr: (nr)-> 
    @divide_number = nr 
    divide_number = @divide_number 

답변

1

다음에 만족해야했다. 이 (@)는 게시물이됩니다.

당신은 하나 @divide_number에 대한 참조를 캐싱하여이 피해 갈 수

for post in collection_of_objects 
    divide_number = @divide_number 
    post.magicnr =()-> 
    return @id/divide_number 

또는 같은 post.magicnr를 정의하기 위해 지방 화살표를 사용하여 :

for post in collection_of_objects 
    post.magicnr =()=> 
    return post.id/@divide_number 
+0

가 참조를 캐싱 " @divide_number "는"@divide_number "가 변경 될 수 있고 post.magicnr이 변경 사항을 반영해야하기 때문에 작동하지 않습니다. "뚱뚱한 화살 "해결책이 전혀 작동하지 않는 것 같고,"@id "또는"@divide_number " divide_number " – Jonathan

+0

divide_number = \ @divide_number를 호출 할 수 있습니다. \ @divide_number가 변경 될 때마다. ahh ofc fat 화살표 접근법은 당신이 post.id (미안)를 통해 @id를 참조해야 함을 의미합니다. 아픈 내 대답을 업데이 트 :) – Nathan

+0

그래, 고마워, 나는 divide_number = \ @divide_number 전화 가야 할 것 같아요 총알이 뚱뚱한 화살과 post.id 게시물의 마지막 refrences 때문에 총 시간이 변경됩니다 모든 경우에 .. 도와 줘서 고마워. :) – Jonathan

관련 문제