Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)
第八章 编码和设计模式
编码模式
- Separating behavior
- Namespaces
- Init-time branching
- Lazy definition
- Configuration objects
- Private variables and methods
- Privileged methods
- Private functions as public methods
- Self-executable functions
- Chaining
- JSON
分离行为
内容与展现,行为分离
HTML:
1.尽可能的不使用style属性
2.与展现相关的tag都不应该被使用,如
3.根据语义使用相关的tag
行为:
1.尽可能减少script标签的数量
2.避免内联的事件(DOM Level 0)
3.不要使用CSS表达式
4.不影响禁用脚本的用户
5.在body标签闭合前引入脚本
命名空间
避免使用全局变量名以降低命名冲突的可能性。
为了简化编码,可以提供一个namespace()方法用于构造命名空间。
分支(条件)初始化
避免在运行时做特性嗅探,在初始化时候先嗅探再初始化相关函数。
惰性定义(延迟定义)
跟条件初始化类似,在需要使用到的时候再完成实际的函数定义工作。
参数对象化
使用对象的形式来传参数。
虽然JS支持可变参数,但是参数对象化后可以不用记住参数顺序,而且方便以后扩展。
私有属性及方法
内部属性和方法别让外部修改。
特权方法
用它来访问私有属性和方法。
将私有方法公开
自启动
var MYAPP = {}; MYAPP.dom = function(){ // initialization code... function _private(){ // ... body } return { getStyle: function(el, prop) { console.log('getStyle'); _private(); }, setStyle: function(el, prop, value) { console.log('setStyle'); } }; }(); |
链式调用
返回this
使用JSON
PS:原文中这节的示例代码是使用的单引号,这是十分不好的,应该避免。虽然在JS中单双引号等效,但标准中指明了是使用双引号。
设计模式
分三类:创建模式、结构模式和行为模式
- 单例模式 Singleton
- 工厂模式 Factory
- 装饰模式 Decorator
- 观察者模式 Observer
-EOF-