1)Javascript设计模式:Module模式
2015-12-26 17:44
615 查看
最简单的创建对象方法
function User(name) { this.name = name || '' } User.prototype.say = function() { console.log('Hi, My name is ' + this.name); } var u = new User('tom')
缺点:此种方法无法实现私有成员变量的隐藏
私有模式
var User = (function() { var sayCount = 0; var _say = function() { sayCount ++; } return { say: function() { _say() console.log('') } } })();
var User = (function() { var sayCount = 0; var _say = function() { sayCount ++; } return { say: function() { _say() console.log('') }, run: function() { // 可以调用say方法吗? // this.say(); 好像不可以,这里的this是context window对象。 // 这种模式是有缺点的,无法在这里调用say方法,只能这样User.say() // 如果私有方法出了bug,由于无法从外部打补丁,也无法对私有方法进行扩展 } } })();
// Revealing Module var User = (function() { var sayCount = 0; var _say = function() { sayCount ++; } function publicSay() { _say() console.log('') publicRun() } function publicRun() { } return { say: publicSay, run: publicRun } })();
相关文章推荐
- JavaScript
- JSON数据转换方法 parse()和stringify()
- JS面向对象的程序设计
- 使用iframe标签,子窗体与父窗体之间相互调用js函数
- jsp编译错误:code too large for try statement
- javascript生成二维码
- Eclipse剪切/复制js代码时卡死的解决办法
- JavaScript知识点回顾
- JavaScript—内置对象
- 自定义类 无极限树形结构菜单(繁杂版)
- 关于jsp中form表单提交
- JSP页面中文乱码
- js 判断密码非连续数字
- js页面跳转整理
- jstack死锁相关线程栈
- ExtJS ViewPort的使用
- javascript进阶系列专题:作用域与作用域链
- json解析
- ExtJS Grid组件实现分页功能
- [转]如何判断js中的数据类型