0

我正在玩 javascript、加载文件和玩回调。

我目前正在使用此代码

    var test_two = {};
(function(pub) {
    var self = this;
    pub.loadScript = function(url, callback){

        var script = document.createElement("script")
        script.type = "text/javascript";
        script.src = url+'.js';
        if (script.readyState){  //IE
            script.onreadystatechange = function(){
                if (script.readyState == "loaded" ||
                        script.readyState == "complete"){
                    script.onreadystatechange = null;
                    callback();
                }
            };
        } else {  //Others
            script.onload = function(){
                callback();
            };
        }
        console.log('Callback '+callback);
        self[url] = callback;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

})(test_two);

如果我像这样使用它,这确实有效

    test_two.loadScript('loadIt', function(){
    //code here
});

现在我想要的是能够做类似的事情

 loaded_script = test_two.loadScript('loadIt');

或者

test_two.loadScript('loadIt', loaded_script);

并使用“loaded_script”引用加载的脚本(变量和方法)

我尝试将其自动添加到我拥有的命名空间中,如您所见

self[url] = callback;

但它涉及到未定义。

你可以看到这是用 RequireJS 完成的。

现在在你告诉我搜索之前,我整天都在搜索,没有任何答案给我我需要的东西,我不想使用 RequireJS 或 jQuery,因为我正在尝试学习这样的东西是如何工作的,而不仅仅是跳跃进入使用代码。

是否有任何页面可以帮助我真正实现我想要的,或者有人可以帮助我吗?

4

0 回答 0