简化JavaScript模式
根据我在上一篇文章中得到的答案,我想知道如何简化下面的JavaScript模式 通过简化,我的意思是通过不重复Module.*方法来保持干燥 前 我认为应该是这样的: Moduje.js简化JavaScript模式,javascript,design-patterns,Javascript,Design Patterns,根据我在上一篇文章中得到的答案,我想知道如何简化下面的JavaScript模式 通过简化,我的意思是通过不重复Module.*方法来保持干燥 前 我认为应该是这样的: Moduje.js var Module = (function(Module) { init = function() { console.log("init"); }; return Module; })(Module || {}); var Module = (function(Module) {
var Module = (function(Module) {
init = function() {
console.log("init");
};
return Module;
})(Module || {});
var Module = (function(Module) {
Module.init = function() {
console.log("init");
};
return Module;
})(Module || {});
Module.Users.js
var Module = Module || {};
Module.Users = (function(Users) {
init = function() {
console.log("Module.Users.init");
};
return Module.Users;
})(Module.Users || {});
var Module = Module || {};
Module.Users = (function(Users) {
Users.init = function() {
console.log("Module.Users.init");
};
return Users;
})(Module.Users || {});
这是原始代码
Moduje.js
var Module = (function(Module) {
init = function() {
console.log("init");
};
return Module;
})(Module || {});
var Module = (function(Module) {
Module.init = function() {
console.log("init");
};
return Module;
})(Module || {});
Module.Users.js
var Module = Module || {};
Module.Users = (function(Users) {
init = function() {
console.log("Module.Users.init");
};
return Module.Users;
})(Module.Users || {});
var Module = Module || {};
Module.Users = (function(Users) {
Users.init = function() {
console.log("Module.Users.init");
};
return Users;
})(Module.Users || {});
嗯:
不,那不行。您正在为该函数之外的模块创建默认值。您也忘记了init声明中的var,在本例中,这使它可以工作,但由于它是一个全局变量,如果不是由于可能强制执行的严格模式而导致的错误,它的工作方式是不正确的。由于您是使用该语句声明模块的,所以将模块作为可能的参数传入并没有任何意义
我不知道简化这个词对你意味着什么;我觉得原版还可以
编辑-如果您想做的是消除对基本对象的重复引用,则可以使用扩展函数,从库中或您自己编写的扩展函数:
function extend(target) {
var sources = Array.prototype.slice.call(arguments, 1), source;
for (var i = 0; i < sources.length; ++i) {
source = sources[i];
for (var key in source) {
if (source.hasOwnProperty(key))
target[key] = source[key];
}
}
return target;
}
对我来说,简化意味着摆脱重复的Module.method1、Module.method2。