2013-03-26 7 views
0

:지방 화살표 반복? 나는이 엄청 많이 (의사 코드)를하는 경향이 커피 스크립트를 쓰고 있어요 때

$link.click (e) => 
    this._clicked(e) 

는 커피 스크립트에 투명하게 결합 할 수있는 방법은 정말 없을까? 그에게이 포인터

어떤 아이디어를 유지, 직접 이벤트에, 내 this._clicked 방법을 결합하는 것

$link.click =this._clicked 

또는 무언가를 : 나는 할 수 있도록하고 싶습니다? 커피 스크립트와 특별한

_clicked: (e) -> 
    # some code 
+0

그러나 '_clicked'함수는 굵은 화살표없이 정의 되었습니까? 그것은 문제 일 수 있습니다. – Bergi

+0

아 .. 내가 그걸 할 수 있는지조차 몰랐어? 함수의 정의에 대한 Fat 화살표 - 이것을 보겠습니다! –

+0

Bergi, 답장으로 저에게 줘. 내가 받아 들일거야 :) –

답변

2

아무것도 :

업데이트는

_clicked는 다음과 같이 정의된다. 그냥

$link.click @_clicked 

을 그리고 그것은 link의 클릭 이벤트에 대한 핸들러로 this._clicked을 전달할 수 있습니다 _clicked

_clicked: (e) => 
    # some code 

로 다음을 정의합니다.

모든 콜백 함수를 이와 같은 콜백으로 전달할 수 있습니다. 키포인트는 기능을 실행하지 않습니다 (@_clicked에는 없음()이 없음). JS의 함수는 매개 변수로 다른 함수로 전달 될 수있는 일반 변수입니다.

$link.click -> 

개봉 단지 직접 변수로 저장하지 않고 .click에 함수를 지나가는

.

this을 계속 사용하려면 define @_clicked with a fat arrow 또는 JavaScripts bind function을 사용하여 this이 특정 값에 바인딩 된 함수를 반환합니다.

CoffeeScript는 JavaScript에 추가 기능을 추가하지 않습니다. Fat 화살표는 (클래스의 메서드 정의에 사용 된 경우) 링크에서 bind 함수와 비슷한 바인딩을 수행하거나 함수 내에 함수가 정의 된 경우 var _this = this 트릭을 수행합니다.

+0

이것은 뜻은 아니지만 좋은 점은 @_clicked를 함수 대신 사용할 수 있다는 것입니다. 난 항상 그것을 인스턴스 변수의 종류로 보았다. (나는 함수가 있다는 것을 알고 있지만, 루비에서 오는 것과는 다르다.) –

+0

나는이 바인딩을 존중하도록 나의 대답을 업데이트했다. – ohcibi