Javascript 拆分js代码(以Ruby风格)
因为我喜欢在RubyonRails中使用模块和类来拆分代码是多么容易,所以我想知道,拆分js代码有什么错/好,比如:Javascript 拆分js代码(以Ruby风格),javascript,module,Javascript,Module,因为我喜欢在RubyonRails中使用模块和类来拆分代码是多么容易,所以我想知道,拆分js代码有什么错/好,比如: var MyApp = {}; MyApp.db = {}; MyApp.settings = {}; // settings.js // ------------- MyApp.settings.get = function () { // do some stuff }; MyApp.setti
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();
});
我读过关于使用prototype的文章,但感觉不像第一个例子那么清楚
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浏览器上运行得很好,但在其他浏览器上还没有测试过,而且在我看来比prototype和其他iv'e浏览器更干净。。我找不到任何类似于我的例子的信息,这让我想,为什么人们不使用这个
我也意识到,我的例子并不是常规的做事方式,但除此之外,还有什么原因,为什么我不应该使用第一个例子
编辑:我喜欢我的示例的主要原因是,我不想将MyApp初始化为新对象,我想将其拆分为多个文件
EDIT2:我的主要问题是,有什么理由不使用第一个示例,除了它不是“约定”之外?在这种情况下,第二个示例没有任何好处。如果您想要声明一些函数或变量,这些函数或变量既不应该在全局范围内公开,也不应该作为MyApp的公共方法公开,那么它将非常有用。使用原型也没有任何好处,因为您可能只有一个MyApp实例—您将其用作名称空间,而不是要使用new关键字实例化的对象 例如:
MyApp = (function () {
var my_app = {};
// calculateSomeStuff and number are "private" to the methods declared here.
// you can't call calculateSomeStuff() or change number from outside,
// and it's not exposed as MyApp.calculateSomeStuff() or MyApp.number
var number = 4;
var calculateSomeStuff = function(){
var result = /* do some calculations */
return result * number;
}
my_app.get = function () {
var data = calculateSomeStuff();
return data + number/2;
};
return my_app;
}());
我的主要问题是,除了不是“惯例”之外,还有什么理由不使用第一个例子?