Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将多个JS文件包装到一个对象中_Javascript_Namespaces - Fatal编程技术网

Javascript 将多个JS文件包装到一个对象中

Javascript 将多个JS文件包装到一个对象中,javascript,namespaces,Javascript,Namespaces,第一次在这里发帖,所以要友善 我第一次创建了一个网站,并且对简化我的写作很感兴趣,这样我就可以将每个javascript文件包装在一个对象中,然后调用一个函数来启动程序 var window, document, AB = {}; AB.MAIN = (function() { var files = [ "file1.js", "file2.js", "start.js" ], load = function (js)

第一次在这里发帖,所以要友善

我第一次创建了一个网站,并且对简化我的写作很感兴趣,这样我就可以将每个javascript文件包装在一个对象中,然后调用一个函数来启动程序

var window, document, AB = {};
AB.MAIN = (function() {

    var files = [
        "file1.js",
        "file2.js",
        "start.js"
    ],
    load = function (js) {
        var script, scripts,
            body = document.body;
        for (var i = js.length - 1; i >= 0; i -= 1) {
            script = document.createElement('script');
            script.src = js[i];
            body.appendChild(script);
        } 
    }(files);
        return {
            start: function () {
                    start();
            },
        }
    }());

window.onload = AB.MAIN.start;
因此,我让我的主对象加载文件并返回一个名为“start”的函数,然后用window.onload调用该函数。这样做的目的是将所有内容都保留在一个名称空间中,但由于我是新手,我不确定这是否A)实际实现了我希望它实现的目标,B)一开始是个好主意


.js文件中的所有函数实际上都被限制在AB.MAIN对象中吗?

在我看来函数太多了。
load=
之后立即调用函数似乎有点毫无意义。。。并且没有返回任何内容,因此
加载
未定义
。您的主要函数是返回一个带有
start
属性的对象,但其中还有一个不必要的函数。只能执行
返回{start:start}。。。尽管您还没有在任何地方定义
start
函数。这是否意味着加载?…但是,是的,在最外层函数中声明的所有函数和变量都是在本地定义的,并且在该外层函数外部不直接可见。“start”函数位于一个.js文件中。当我尝试执行start:start时,我得到一个错误,即“start”未定义,可能是因为文件尚未加载。在函数中包装它消除了错误。我明白了。这是有道理的,但只适用于被调用的
start
函数是全局函数。您可能知道这一点,但您正在加载的脚本并不局限于此变量范围。只有直接写在里面的代码是。啊,我不知道这个。这基本上就是我想找到的。我很难判断情况是否如此,因为只需执行window.onload=start;带来了一个错误。现在我尝试了别的方法,意识到我的错误。。。。