javascript与OOP
2010-01-09 15:13 花晓霜 阅读(496) 评论(0) 编辑 收藏 举报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) {}
JavaScript支持
原型链实现继承
//类表示: function Class(){} //类实例化 var clazz = new Class(); //常见的Object类实例: var obj = {};
//父类 function Father(){} //用于连接父子类原型链,现称为桥接类 function Bridge() {} //子类 function Son(){} //建立原型链 Bridge.prototype = Father.prototype; Son.prototype = new Bridge(); //正确指定constructor Son.prototype.constructor = Son;
桥接类好处在于,修改子类原型并不会影响到父类原型
完成父子类关系构建后,以后可给父子类作扩展
Father.prototype.say = function(){} var son = new Son(); son.say(); Son.prototype.sayOk = function(){} son.sayOk();
实现接口
利用JavaScript的call或apply方法
classA.method.apply(classB, arguments);
3. 多态
JavaScript本身支持的方法传递可变参数与泛型
function action(arg0, arg1, …, argN);