// 1、命名空间
// 解决的问题:明明空间解决了人们定义变量的时候起名冲突或者词汇匮乏的问题
var Ming = {
g: function(id) {
return document.getElementById(id)
},
css: function(id, key, value) {
// 简单样式属性设置
this.g(id).style[key] = value
}
}
// 2、模块分明
// 通过单例模块来管理代码库的各个模块
// 比如
// baidu.dom.addClass // 添加元素类
// baidu.dom.append // 插入元素
// baidu.event.stopPropagation // 阻止冒泡
// baidu.event.preventDefault // 阻止默认行为
// baidu.event.trim //去除字符串收尾空白字符
// baidu.event.encodeHTML // 将字符串进行html 编码
// 3、创建小型代码库
// 例如库A
var A= {
Util : {
util_method1: function(){},
util_method2: function(){}
},
Tool : {
util_method1: function(){},
util_method2: function(){}
},
Ajax: {
get: function(){ } ,
post: function(){ } ,
},
others: {
}
}
// 加入要使用的时候
A.Util.util_method1()
A.Tool.util_method1()
A.Ajax.get()
// 定义无法修改的静态变量
var Conf = (function(){
// 私有变量
var conf = {
MAX_NUM: 100,
MIN_NUM: 1,
COUNT: 10000
}
// 返回取值器对象
return {
// 取值器方法
get: function(name) {
return conf[name]? conf[name]: null;
}
}
})();
// 为了实现创建后就能使用,我们就需要让匿名函数执行一次
// 用例:
var count = Conf.get('COUNT')
console.log(count)
// 4、惰性单例
// 惰性载入单例
var LazySingle = (function() {
// 单例实例引用
var _instance = null;
// 单例
function Single () {
// 这里定义私有属性和方法
return {
publicMethod: function() {},
publicProperty: '1.0'
}
}
// 获取单利对象接口
return function() {
// 如果为创建单例将创建单例
if(!_instance) {
_instance = Single();
}
// 返回单例
return _instance
}
})();
// 测试一下
console.log(LazySingle().publicProperty)
javascrip之单例模式----2022-11-19
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Spring 单例不是 Java 单例。本文讨论 Spring 的单例与单例模式的区别。 前言 单例是 Sprin...
- 日更挑战当前排名:第581天,第724名,排名较昨日前进0名。 比赛日,官网给出每场比赛的Notes(极个别场次没...