2012-08-29 2 views
0

많은 양의 자바 스크립트가있는 웹 프로젝트에서 작업하고 있으며 "$."에 모든 것을 추가했기 때문에 네임 스페이스 충돌을 시작했습니다.IIFE jquery ready

나는의 네임에 대해 읽어 및 http://addyosmani.com/blog/essential-js-namespacing/

에 큰 기사를 발견 권장 내가 인생의 내부 공간을 설정하기 위해 노력하고 기능이

(function() { ... }); 
로 이미 설치했기 때문에 나는 운이 알았는데

는 그래서 그것을 변환 :이었다 실제로 원래 그

(function(namespace, undefined) { ... })(window.stuff = window.stuff || {}); 

만 (작업 시간 후) 찾을 수

$(function() { ... } 

이는 모두 jQuery의 ready() 함수에서 호출되었음을 의미합니다.

나는 이름 공간 IIFE를 유지하고 싶지만 jQuery의 ready() 함수에서 어떻게 사용하는지 알아낼 수 없다. 이것이 가능한가? 그렇다면 어떻게 될까? 당신이 함수를 호출하지 않는 때문에

답변

0
var namespace = (function() { 
    // local variables and functions 

    function readyHandler($) { 
     // DOM ready code 
     $("selector").method(); 
    } 

    // exposed methods 
    return { 
     readyHandler: readyHandler 
    }; 
})(); 

jQuery(namespace.readyHandler); 
+0

기존 코드를 세 심하게 파티셔닝 한 후이 답변에서 제시 한 바를 기본적으로 수행 할 수있었습니다. 네임 스페이스를 만들고 jQuery의 ready() 함수에서 호출 할 API 메서드를 노출합니다. – user1601333

0

음, 당신은 개념을 가지고 확실하지 않은 경우 바로 ... 그 아무 기능은 즉시 호출 기능 발현처럼 보인다 없습니다. 당신은 어쨌든 인생을 필요가 없습니다

(function() { ... }()); 
        --^-- invoke function 

jQuery의 ready 이미 새로운 클로저를 작성합니다.

아무튼 jQuery를 사용할 때 $ 네임 스페이스에서 플러그인을 네임 스페이스로 오염시킬 수 있습니다.

$.myplugin = { 
    ... 
} 
+0

고마워, 나는 네가 쓴 것을 의미했지만 결말을 놓쳤다. 나는 내 질문을 수정했다. 또한 jquery 플러그인을 만들지 않고 별도의 네임 스페이스를 사용해야하는 내 자신의 코드를 작성합니다. 문제는 내가 상속 한 코드가 jQuery ($) 네임 스페이스에 모든 것을 추가했다는 것입니다. – user1601333

관련 문제