javascript设计模式-单体模式
2016-03-14 22:15
525 查看
场景:假设有一个Girl(美女)实体,该实体拥有姓名、年龄两个属性,拥有显示姓名和洗澡两个方法,下面分步骤构造该实体。
1、用简单基本单体模式:
问题:美女的名字和洗澡这么隐私的是不能随便被访问的吧,那就要用到(私用成员的单体)
问题:如果我很猥琐,在洗澡的方法前面加一个下横线,那不是偷窥成功了吗?快使用闭包吧
结果:完美
但是,美女是用来怜惜的,没事儿的时候可别随便拿出来秀哟,那我们就用惰性加载吧!!!
1、用简单基本单体模式:
var Girl1 = { name:"昭君", age:33, showName:function(){ alert("我的名字是:" + this.name); }, bathe:function(){ console.log("我是" + this.name + ",我在洗澡!"); } } console.log("Girl.age=" +Girl1.age); Girl1.bathe();
问题:美女的名字和洗澡这么隐私的是不能随便被访问的吧,那就要用到(私用成员的单体)
//使用下划线表示法 1 var Girl2 = { name:"昭君", _age:33, showName:function(){ console.log("我的名字是:" + this.name); }, _bathe:function(){ console.log("我是" + this.name + ",我在洗澡!"); } } console.log("Girl2.name=" +Girl2.name);//Girl3.name=昭君 console.log("Girl2.age=" +Girl2.age); //Girl.age=undefined Girl2.showName();//我的名字是:昭君 Girl2.bathe();//Uncaught TypeError: Gird2.bathe is not a function
问题:如果我很猥琐,在洗澡的方法前面加一个下横线,那不是偷窥成功了吗?快使用闭包吧
//使用闭包 var Gird3 = (function(){ var age = 33; function bathe(){ console.log("我是" + this.name + ",我在洗澡!"); } return { name:"昭君", showName:function(){ console.log("我的名字是:" + this.name); } } })(); console.log("Girl3.name=" +Gird3.name);//Girl3.name=昭君 console.log("Girl3.age=" +Gird3.age); //Girl.age=undefined Gird3.showName();//我的名字是:昭君 Gird3.bathe();//Uncaught TypeError: Gird3.bathe is not a function
结果:完美
但是,美女是用来怜惜的,没事儿的时候可别随便拿出来秀哟,那我们就用惰性加载吧!!!
//惰性实例化 var Gird4 = (function(){ var girl = null; function constructor(){ var age = 33; function bathe(){ console.log("我是" + this.name + ",我在洗澡!"); } return { name:"昭君", showName:function(){ console.log("我的名字是:" + this.name); } } } return { getInstance:function(){ if(girl) return girl; return constructor(); } } })(); Gird4.getInstance().showName();
相关文章推荐
- 用javascript模拟用户发起浏览器请求
- TypeToken 是google提供的一个解析Json数据的类库中一个类
- 使用jsp/servlet简单实现文件上传与下载
- Django1.9中静态文件配置(css,js,image都会被当做静态文件处理)
- c#后台将数据转换为json字符串,前台ajax解析json字符串
- 【Mocha.js 101】Mocha 入门指南
- 【Mocha.js 101】Mocha 入门指南
- JS的内置对象
- JS基础回顾,小练习(DOM元素)
- 第一个JavaScript
- Jsp到Action后台的数据接收方法
- JSP内置对象二(response和session对象)
- JavaScript高级程序设计(第三版)学习笔记20、21、23章
- 由浅及深js运动框架
- 组合继承
- html中插入css和js
- JavaScript中的创建对象
- js问题
- javascript实现查看html网页放大图片功能
- 实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)