OOP三个代表:
1. 封装
JavaScript支持
对象数据结构: { attributeName : attributeValue }
对象属性公开访问
object.attributeName
目前JavaScript在属性访问封装上的缺陷:缺少自定属性getter与setter规则
object.attributeName.__defineGetter__ = function(){ return ..}
object.attributeName.__defineSetter__ = function(){ this.attributeName = ..}
成员反射
for (var key in object) …
2. 继承与接口
JavaScript支持
原型链实现继承
类表示:
function Class(){}
类实例化
var clazz = new Class();
常见的Object类实例:
var obj = {};
继承实现
父类
function Father(){}
//用于连接父子类原型链,现称为桥接类
function Bridge() {}
子类
function Sun(){}
//建立原型链
Bridge.prototype = Father.prototype;
Sun.prototype = new Bridge();
//正确指定constructor
Sun.prototype.constructor = Sun;
桥接类好处在于,修改子类原型并不会影响到父类原型
完成父子类关系构建后,以后可给父子类作扩展
Father.prototype.say = function(){}
var son = new Son();
son.say();
Sun.prototype.sayOk = function(){}
son.sayOk();
实现接口
利用JavaScript的call或apply方法
classA.method.apply(classB, arguments);
3. 多态
JavaScript本身支持的方法传递可变参数与泛型
function action(arg0, arg1, …, argN);










Closure Tools中包含三套工具: