Object-Oriented JavaScript笔记(七)

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-