您的位置:首页 > Web前端 > JavaScript

JavaScript的另外两种继承机制--zInherit/xbOjbects

2009-09-23 15:07 483 查看
1>zInherit:

      它是一个组件,用来继承基类的所有属性和方法。跟以前说到的原型链模式非常类似,只不过比原型更安全,也无须考虑参数问题。下面看看zInherit的用法:

      该组件中只有两个方法:inheritFrom() instanceof()

    
function Polygon(iSides){
this.iSides = iSides;
if(typeof Polygon._initialized == "undefined"){
Polygon.prototype.getArea = function(){
return 0;
}
Polygon._initialized = true;
}
}

function Traingle(iHeight,iWidth){
Polygon.call(this,3);
this.iHeight = iHeight;
this.iWidth = iWidth;

if(typeof Traingle._initialized == "undefined"){
Traingle.inheritFrom(Polygon);
//上行的效果跟原来的这个非常类似
// Traingle.prototype = new Polygon();
Traingle.prototype.getArea = function(){
return 0.5*iHeight*iWidth;
}
Traingle._initialized = true;
}
}

var traingle = new Traingle(12,4);
alert(traingle.getArea());//24


 

    Note:在执行前必须加载zInherit.js

2>xbObjects.js

 

    它是一个功能更强大的继承机制,除了可以继承基类的属性和方法外,还可以调用父类的方法,在执行前页必须增加组件xbObject.js.

 具体的步骤如下:

   第一步:注册类(_classes.registerClass("sub_class","base_class") _classes.register("sub_class"))

   第二步:构造函数,并在函数中定义类(_classes.defineClass("class_name",prototypeFunction))

   第三步:执行init()方法,该方法的参数必须跟构造函数的参数匹配

   第四步:可以通过parentMehtod("method_name",arguments)

  
<mce:script type="text/javascript"><!--
//Polygon
_classes.registerClass("Polygon"); //1
function Polygon(iSides){ //2
_classes.defineClass("Polygon",prototypeFunction);

this.init(iSides);//初始化Polygon的所有属性//3

function prototypeFunction(){//4
Polygon.prototype.init = function(iSides){
this.parentMethod("init");
this.iSides = iSides;
};
Polygon.prototype.getArea = function(){
return 0;
}
}
}

// Traingle

_classes.registerClass("Traingle","Polygon");
function Traingle(iWidth,iHeight){
_classes.defineClass("Traingle",prototypeFunction);

this.init(iWidth,iHeight);

function prototypeFunction(){
Traingle.prototype.init = function(iWidth,iHeight){
this.parentMethod("init",3);
this.iWidth = iWidth;
this.iHeight = iHeight;
};
Traingle.prototype.getArea = function(){
return 0.5*iWidth*iHeight;
}
}
}

var t = new Traingle(4,14);
alert(t.getArea()); //output 24
alert(t.iSides); //output 3
// --></mce:script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript function class