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 
    } 
})(); 

我已經建立了jQuery的功能,預加載我的JavaScript文件時,我真的需要這麼做。這裏有一個函數:

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​​

0

你只需要將匿名function的返回值賦值給一個變量。您隨後可以在您的callbackfunction中使用它,例如,

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

     } 
    }; 
})(); 

在您callbackfunction然後你可以只使用loaded.foo

正如你使用jQuery,我會建議使用$.getScript()來獲取JS文件。這將使你的代碼更簡單,即

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

然後,您可以使用它像:

load('js/test.js', function() { 
    console.log(loaded.foo()); 
}); 
相關問題