alzui类封装的演化过程(续)--含继承机制和_super关键字

11、回顾一下类的形式定义(根类雏形基本形成)
_class("AObject", function(){
this._init = function(){
this._disposed = false;
};
//这个方法具体作何用途只能以后说明了,暂且理解成析构函数吧
this.dispose = function(){
this._disposed = true;
};
});

12、设计基类的目的是为了继承,所以有必要对基础支持代码做些调整,以便于支持继承
在_class函数第二个参数位置添加一个参数superClass,用来引用当前类的父类,注意放在第二个位置是有目的的,主要是为了和java中的类定义形式产生对照关系。
//---- 基础支持代码开始 ----
function __newClass(){
return function(){
this._init.apply(this, arguments);
};
}
function _class(className, superClass, classImp){
if(superClass === null){
//如果是null,默认父类为Object(实现中只有AObject继承自Object)
superClass = Object;
}else if(superClass === ""){
//如果是"",默认父类为AObject,为什么这么做,还不便说清楚,以后再详细说明理由吧!
superClass = window["AObject"];
}
var clazz = __newClass();
clazz.prototype = new superClass(); //这是模拟继承的关键语句
window[className] = clazz;
classImp.apply(clazz.prototype);
}
//---- 基础支持代码结束 ----
_class("AObject", null, function(){
this._init = function(){
this._disposed = false;
};
this.dispose = function(){
this._disposed = true;
};
});

13、继承机制已经实现,下面就是如何方便的调用父类同名方法了,_super关键字登台

function __newClass(){
return function(){
this._init.apply(this, arguments);
};
}
function _class(className, superClass, classImp){
if(superClass === null){
superClass = Object;
}else if(superClass === ""){
superClass = window["AObject"];
}
var clazz = __newClass();
clazz.prototype = new superClass();
var _super = superClass.prototype; //原来_super的含义只是这个
window[className] = clazz;
classImp.apply(clazz.prototype, [_super]);
}
_class("AObject", null, function(){
this._init = function(){
this._disposed = false;
};
this.dispose = function(){
this._disposed = true;
};
});
//定义一个类,继承自AObject
_class("ClassA", "", function(_super){
this._init = function(){
_super._init.call(this);
this._name = "ClassA";
};
this.dispose = function(){
//就是这么调用父类方法的,看来也不是很简洁,讲究着用吧,总比写出来父类的名
//字的形式要稳定的多!
_super.dispose.apply(this);
};
});

就先写这些吧,整个封装的演化过程已经是历史了,想回忆清楚还真有点难度。^_^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值