2009-08-10 3 views
2

기능적 프로그래밍에 익숙하지 않아서 (jQuery 독점적으로) 내 응용 프로그램의 JavaScript에서 작업하고 jQuery의 이벤트 시스템이 함수 프로그래밍 패러다임과 어떻게 관련되어 있는지 궁금해했습니다.기능적 jQuery : 사용자 정의 이벤트 또는 함수?

나는 쉽게

$(document).bind('setupAccountHeader', function() { 
    blah, blah, blah; 
}); 

또는

var setupAccountHeader = function() { 
    blah, blah, blah; 
}; 

그런 다음, 트리거 또는 필요한 때 호출 중 하나

같은 문서 바인딩 이벤트가 될 수있는 기능 setupAccountHeader 있습니다.

그래서 나는 두 가지 질문이 있습니다

기능 jQuery를 선호하거나 순전히 맛/개인 스타일의 문제입니다 스타일

1)? 큰 그림 건축술을위한 연루는 어떨까요?

2) 기능적 스타일의 jQuery를위한 훌륭한 자료가 있습니까? 존 레지그 (John Resig)의 의도라고 생각하지만, 정보 구현이나 가이드에서 이것이 의미하는 바를 많이 찾을 수는 없습니다.

답변

0
  • jQuery에서 이벤트를 바인딩하는 공식적인 방법은 첫 번째 버전입니다. 이와 같은 방법으로 이벤트 바인딩 및 바인딩 해제 방법이 비슷합니다. 나는 코드 가독성을 돕고, 코드에 대한 지원을 얻고, 기본 이벤트 버블 링을 방지하는 것과 같은 jQuery와 관련된 다른 함수를 사용하여 개인적인 선호도를 높이는 것이 아니라고 생각한다. 첫 번째 질문의 두 번째 예제는 JavaScript에서 올바르지 만이 스타일은 jQuery 문서에서 사용되지 않습니다.

업데이트

이벤트를 결합하고 흐림, 초점, 부하, 크기 조절, 스크롤, 언로드 (일반의 첫 번째 버전을 사용하는 겁니다 normalized event system의 이점을 사용하는 경우, mousebuild, mouseout, mouseout, mouseleave, change, select, submit, keydown, keypress, keyup, error) 또는 사용자 정의 이벤트에 대한 정보를 제공합니다.

그들은 실제로 유사하지. 두 번째 기사에서 유사하려면 몇 가지 이벤트를 문서화하기 위해 첨부해야합니다. 아이디어를 얻기 위해 그들을 취소하려고하십시오.

// first version 
$(document).unbind('setupAccountHeader'); // will cancel the binding of some action 
// second version 
setupAccountHeader = null; // will just cancel a variable 

다른 버전는 자바 스크립트 어디에서나 사용할 수있는 폐쇄하고,이 경우에도 사용된다. 문맥 없이는 특별한 의미가 없습니다.

  • 정말 두 번째 질문을 이해하지 않습니다. 어쩌면 당신이 의미하는 것을 상세히 표현할 수 있습니다. 나는 영어 원어민이 아니다.
+4

재미있는, 그러나 정말 자신의 질문에 대답하지 않습니다

다음과

(Elzo 말했듯이) 당신은 jQuery의 추가 이벤트 메커니즘과 함께 위를 달성 할 수있다. 실제로, 그것은 심지어 재미 있지 않습니다. –

+0

@ 로버트 하비 코멘트가별로 도움이되지 않습니다, 사실이 아닙니까? –

+0

나는 그것을 말하지 않을 것이다. 당신은 당신의 대답을 향상 시켰지, 그렇지? +1 –

1

두 번째 스타일에 대한 좋은 점은 "익명"과 반대로 이름이있는 디버거 호출 스택에 표시된다는 점입니다. 좀 더 도움이됩니다.

$(document).bind('setupAccountHeader', setupAccountHeader); 
+2

을 확인 @ 벤 (http://yura.thinkweb2.com/named-function-expressions/#named-expr) :'$ (문서) .bind ('setupAccountHeader'기능 setupAccountHeader() {...});' –

+0

+1 ㅎ ... 확인 해하지만, 그럼에도 불구하고 좋은 점 ...이 상황에서 아마 나던 문제지만, 이벤트 핸들러가있는 경우 여러 객체 (특히 많은 수의 객체)가 재사용 할 수 있으므로 응답의 접근 방식을 효율성을 위해 사용해야합니다. 그러나 단순한 처리기 인 경우 두 가지를 모두 활용하는 것이 좋습니다. –