在JavaScript中定义Module(pattern)的多个实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在JavaScript中定义Module(pattern)的多个实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1557字,纯文字阅读大概需要3分钟。
内容图文
![在JavaScript中定义Module(pattern)的多个实例](/upload/InfoBanner/zyjiaocheng/805/eec5d7703d4d4889a8fdcfeb9748660f.jpg)
我试图找到如何创建多个实例并根据模块模式配置我的模块的最佳方法.
目前我有
var Logger = (function () {
// Private members
var _settings = {
json: JSON,
output: console
};
// Private methods
var _log = function (info) {
_settings.output.log(info);
};
var _dump = function (info) {
_log(_settings.json.stringify(info));
};
// Change default settings
var changeSettings = function (settingsArgs) {
if (settingsArgs !== undefined) {
if (settingsArgs.json !== undefined) {
_settings.json = settingsArgs.json;
}
if (settingsArgs.output !== undefined) {
_settings.output = settingsArgs.output;
}
}
};
return {
init: changeSettings,
log: _log,
dump: _dump
};
})();
关于这种模式,我有几个问题.
>为模块提供配置的最佳方法是什么,我只是为私有设置字段创建了setter,但我觉得这不是最好的实现方式.请建议正确的方法.
>如何创建模块的多个实例.据我所知,模块通常用于封装全局对象和逻辑(如单例),因此大多数时候只存在一个模块实例,但我需要有多个实例.在我的情况下,这可能是有用的,例如,我可以创建一个记录器ConsoleLogger另一个将是AlertLogger的差异输出,但现在我只能有一个实例.
请建议正确的方法,我已经阅读了很多文章,但没有找到我的问题的答案.谢谢
解决方法:
你有什么模块用作立即调用函数表达式(IIFE),因为最后是().因此,您在类定义时创建实例,并且您只能有一个实例.你可以克隆一个实例并拥有多个实例,但这不是一件好事.
如果您想拥有多个实例,则最后应删除IIFE表达式.此外,您可以将设置作为构造函数参数传递:
var Logger = function (settingsArgs) {};
现在,您可以创建多个实例:
var consoleLogger = new Logger({output: console});
var alertLogger = new Logger({output: alert}); // change this line probably, for this to work _settings.output.log(info);
内容总结
以上是互联网集市为您收集整理的在JavaScript中定义Module(pattern)的多个实例全部内容,希望文章能够帮你解决在JavaScript中定义Module(pattern)的多个实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。