拆分js代码(以Ruby'ish方式)

时间:2014-11-21 15:19:43

标签: javascript module

因为我喜欢在Ruby On Rails中拆分代码是多么容易,使用模块和&类,我想知道,有什么错误/好分裂js代码分开,像这样:

    var MyApp = {};
    MyApp.db = {};
    MyApp.settings = {};

    // settings.js
    // -------------
    MyApp.settings.get = function () {
        // do some stuff
    };
    MyApp.settings.set = function () {
        // do some stuff
    };
    // -------------

    // db.js
    // -------------
    MyApp.db.init = function () {
        // do some stuff
    };
    // -------------

    $(function () {
        MyApp.db.init();
        MyApp.settings.get();
        MyApp.settings.set();
    });

我已经阅读了有关使用原型的内容,但它并不像第一个例子那样清晰。

var MyApp = (function (my_app) {

    my_app.init = function () {
        // stuff
    };

    return my_app;
}());

MyApp.prototype.settings = (function (my_app) {

    my_app.get = function () {
        // stuff
    };

    my_app.set = function () {
        // stuff
    };

    return my_app;
});

MyApp.init();
MyApp.settings.get();
MyApp.settings.set();

第一个例子在chrome浏览器上运行得很好(没有在其他人身上测试过),对我来说似乎比原型和其他人看得更清楚..而且我找不到类似于我的例子的任何信息,这让我想到,为什么人们不使用这个..

我也意识到,我的例子不是做事的常规方式,但是除此之外有什么理由,为什么我不应该使用第一个例子?

编辑:主要原因,我喜欢我的例子,是,我不想将MyApp初始化为新对象,我想将它拆分为多个文件。

EDIT2:我的主要问题是,有什么理由,为什么我不应该使用第一个例子,除了它不是'惯例'?

1 个答案:

答案 0 :(得分:0)

在这种情况下,第二个例子并没有提供任何好处。如果您想声明一些既不应该在全局范围内也不应该作为MyApp的公共方法公开的函数或变量,那将非常有用。使用原型也不会带来任何好处,因为您可能只有一个MyApp实例(您将其用作命名空间,而不是您将要使用{实例化的对象{1}}关键字)。

例如:

new