0

공용 메서드를 반환하는 JavaScript 파일이 있습니다. 이 JavaScript 파일은 처음에는로드하지 않지만 필요할 때만 미리로드합니다. 예 :로드 된 JavaScript 파일에서 반환 된 공용 객체를 콜백 함수로 전달하는 방법은 무엇입니까?

(function() { 
    // Some privat vars and functions 
    var something = 'Something goes well!'; 

    function doSomething() { 
    console.log(something); 
    } 

    return { 
    doSomething: doSomething, 
    doAnotherThings: doAnotherThing 
    } 
})(); 

정말 필요한 경우 JavaScript 파일을 미리로드하기 위해 jQuery로 함수를 만들었습니다. 다음 함수는 다음과 같습니다

function load(file, callback) { 
    var head = $("html").closest("head"), 
     tag = $("<script />", { 
     type: "text/javascript" 
     }); 

    tag.on("load", callback); 
    tag.attr("src", file); 

    head.append(tag); 
} 

내 질문은 내가 인수로 콜백에 불과로드 스크립트에서 공공 객체를 반환 패스 어떻게 입니까? 공용 메서드를 사용할 수있는 즉시 사용할 수 있기 때문에 ...

답변

0

파일을로드 할 때 이벤트를 트리거 한 다음 콜백 함수가 해당 사용자 지정 이벤트를 수신하도록 할 수 있습니다.

당신은 jQuery를 트리거 방법을 사용할 수 있습니다 - 당신은 이미 jQuery를 사용하는 경우 http://api.jquery.com/trigger/

0

을, 당신은 부하의 성공에 화재 콜백 소요되는 내장 $ .fn.get을 사용할 수 http://api.jquery.com/jQuery.get/

을 (비록 대신 자신의로드 함수를 돌리고 싶습니까?)

0

익명 function의 반환 값을 변수에 할당하면됩니다. callbackfunction에서 사용할 수 있습니다. 당신의 callbackfunction 당신은 그럼 그냥 loaded.foo를 사용할 수 있습니다 내

var loaded = (function() { 
    return { 
     foo: function() { 

     } 
    }; 
})(); 

.

jQuery를 사용할 때 $.getScript()을 사용하여 JS 파일을 가져 오는 것이 좋습니다.

load('js/test.js', function() { 
    console.log(loaded.foo()); 
}); 
: 이것은 즉

function load(file, callback) { 
    $.getScript(file, callback); 
} 

당신은 다음처럼 사용할 수 있습니다, 당신을위한 코드를 간단하게 만들 것