0

이렇게 나는 astraight 답을 찾을 수 없습니다. 비슷한 플러그인/메소드 선언이 사용되는 여러 변형의 모호한 예만 있습니다. 나는

$.fn.myPlugin 

을 말함으로써 I는 fn 프로토 타입을 의미한다 유효한 jQuery를 개체에서 실행할 수 있습니다 공개적으로 사용 가능한 플러그인 방식을 정의하고 있음을 알고있다. 내 질문 중 하나

$.something.methodName //where 'something' is in place of 'fn' 

이는 공공/민간 방법 인 영향을 미치는가 너무

$.fn.myPlugin.methodName 

또는 내 플러그인의 외부

과 같이 같은 내 주요 플러그인의 내부 방법을 정의하여, 다음입니까? 각각이 다른 유형의 선언 인 경우 차이점은 무엇입니까?

상황에 대한 일부 상황을 알기 원한다는 뒷 이야기는 최종 사용자가 호출 할 수 있고 정상적으로 실행되는 하나의 기본 플러그인을 정의하고자하지만, 사용자가 일부 메소드를 재정의하려는 경우입니다. 나는 그것을 공개 할 수있게 허용했다. 사용자가 다시 정의하지 않고 대신 콜백을 제공하여 콜백을 제공 할 수있는 메소드가있는 경우 해당 메소드를 비공개로 설정하려고합니다.

+0

다음은 공공의 당신이,'$ .whatever'에 아무것도를 설정하는 경우 ... –

+0

그래서 난 다음 할 것'$ .fn.myPlugin.privateMethod'는 myPlugin에 대한 민간 방법을 선언? – Turk

+0

아니요. 그런 공용 범위에서 개인 메서드를 만들 수는 없습니다. 아래의 @NiettheDarkAbsol이 제공하는 답변을보고 어떻게하는지보십시오. – Archer

답변

2

$.whatever에 설정된 모든 항목은 공개되어 다른 개발자가 수정할 수 있습니다.

개인 방법을 원한다면 클로저를 만들어야합니다.

(function() { 
    function init(jqObj) { ... } // do magic here 
    $.fn.myPlugin = function() { init(this); } // avoid exposing core method 
    $.fn.myPlugin.publicMethod = function() { ... } 
    function privateMethod() { ... } 
})(); 
+0

아, 알았어. 나는 클로저가'(function ($) {} (jQuery));를 통해 정의되고있다. '이제 private 메소드는 단지 로컬 범위 함수이다. 그건 제가 누락 된 부분입니다 만, 플러그인 자체를 작성하는 것을 피하는 사람이 없도록 메인 플러그인의 private 함수로'function (init)'을 사용하고 있습니까? – Turk