2013-01-20 6 views
0

자기가 익명 함수를 실행할수록 더 혼란 스럽습니다. :)jQuery.ready를 다른 익명 자체 실행 함수와 함께 사용하는 방법은 무엇입니까?

제 질문은 jQuery의 document.ready 함수를 사용하면 해당 함수 내에 전체 응용 프로그램 논리를 배치해야합니까? 다른 자체 실행, 익명 함수에 코드가있는 경우 document.ready 호출에서 해당 코드를 트리거하는 방법은 무엇입니까? (글로벌 네임 스페이스의 모든 변수를 넣어없이?)

Document.ready 코드하십시오 s.e.a.f에서

$(document).ready(function() { 
    // how do I trigger another s.e.a.f. here? 
    var myApp = new App(); 
    myApp.initialize(); 
}); 

내 애플 로직 : 당신은 할 수 없습니다

(function(window){ 
    function App(){ 
     this.initializeApp = function() { 
       // we are initialised! 
     } 
    } 
    // how do I prevent putting 'App' in the global space? 
    window.App = App; 
})(window); 
+0

익명의 사용자의 내부에서'$ .ready '를 움직이면 어떨까요? – Alexander

답변

0

.

범위 밖에있는 함수와 통신하는 유일한 방법은 개체를 전역 범위의 어딘가에 배치하는 것입니다.

대신 $(document).ready() 내부로 호출하여 IIFE를 호출하여 클로저를 통해 로컬 변수에 액세스 할 수 있도록해야합니다.

0

"나는 document.ready 호출 내에서 그 코드를 실행 어떻게"

확실히 응용 프로그램 로직이 먼저 존재하고 당신이 당신이 쓴 함수 이름을 사용하는 것이 확인하십시오.

(function(window){ 
    function App(){ 
     this.initializeApp = function() { 
       // we are initialised! 
      console.log('initialised'); 
     } 
    } 
    window.App = App; 
})(window); 

$(function(){ 
    var myApp = new App(); 
    myApp.initializeApp(); // not myApp.initialize(); 
}); 

하지만

// how do I prevent putting 'App' in the global space? 

이 별도의 문제입니다 ...

은 별도의 인스턴스를 사용합니다.

jQuery(document).ready(function($){ 
    function App(){ 
     this.initializeApp = function() { 
       // we are initialised! 
      console.log('initialised'); 
     } 
    } 
    // how do I prevent putting 'App' in the global space? 

    var myApp = new App(); 
    myApp.initializeApp();  
}); 

jQuery(document).ready(function($){ 
    var myApp = new App(); // this will throw an error - it doesn't exist here 
}); 
+0

감사합니다. 아마도 전역 네임 스페이스를 오염시키지 않으면 서 자체 발췌 기능 사이에서 통신하는 방법에 대한 새로운 질문을 게시해야합니다. – Kokodoko