2011-02-25 4 views
1

내 webapp에서이캡슐화 된 자바 스크립트 코드에 데이터 전달

var data = { 
    getItem: function(key){ 
     ... 
    } 
} 

내 모든 스크립트에서 사용할 수

data.getItem("Test"); 

그러나 어떻게 jquery plugins에서 사용할 수 있습니까? 플러그인은 종종 다음과 같은 구조를 가지고 있습니다.

(function($, window, document) { 
    //....plugin-code 
}); 

어떻게 이런 종류의 구조를 호출 할 수 있습니까? 그러한 플러그인에서 내 글로벌 데이터 변수를 사용할 수 있습니까?

+1

예, '데이터'식별자가 플러그인의 더 많은 로컬 변수/인수에 의해 가려진 경우가 아니면 가능할 것입니다. –

답변

1

데이터 변수가 전역 변수 인 경우 예, jQuery 플러그인을 포함하여 어디에서나 사용할 수 있습니다.

데이터를 사용하려고하는 자체 실행 기능보다 먼저 데이터를 정의해야합니다.

+0

"자체 실행"대신 "즉시 호출 됨" –

+0

@Sime 흥미로운 기술적 요점. 감사. 관심있는 사람들을위한 자세한 정보는 여기를 참조하십시오. http://benalman.com/news/2010/11/immediately-invoked-function-expression/ –

1

사실 그들은 상관없이 어떤 다른 $ 예를 들어 정의하는로드의

  1. 들이이 범위에서 해당 $ 항상 jQuery를 할 것으로 가정 할 수있는 구조를

    (function($) { 
        // plugin-code 
    })(jQuery); 
    

    점을 가지고하는 경향이 프로토 타입

  2. 모든이 폐쇄 내부에 정의되어 있고 가정 할 수있는 사용자 환경에서 당신의 플러그인이 있다면 그렇게 만이 ($.fn 또는 $.extend에 의해) 노출을 선택 무슨 일이

물론 외부에 유출된다 당신은 항상 $ = jQuery를 사용하고 있습니다. (당신도 문서와 창을 가지고 있습니다 : 나는 이것들을 오버라이드 한 적이 한번도 보지 못했고, 문서와 창문 이외에 당신이 논점으로 무엇을 넘겨 줄지 확신하지 못합니다.)

플러그인 또는 플러그인 범위 외부에서 플러그인을 가져 오는 중입니까? 내부에 쓸 수있는 것에 대한 제한이 없으므로, 내부에서 정의하고 사용하면 코드가 정확하게 생성됩니다. 내부에서 정의 된 데이터에 외부에서 액세스해야하는 경우 어떻게 든 외부로 유출해야합니다. $, document 또는 window 중 하나에 액세서 메소드를 추가합니다.

플러그인 범위 외부에서 데이터를 가져 오는 경우에도 클로저 내부에서 전역 변수에 액세스 할 수 있습니다. 그렇지 않으면 추가 인수로 전달할 수 있습니다. 차이가 있다고 생각하지 않습니다. .

관련 문제