JavaScript的另外两种继承机制--zInherit/xbOjbects
2009-09-23 15:07
483 查看
1>zInherit:
它是一个组件,用来继承基类的所有属性和方法。跟以前说到的原型链模式非常类似,只不过比原型更安全,也无须考虑参数问题。下面看看zInherit的用法:
该组件中只有两个方法:inheritFrom() instanceof()
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)
它是一个组件,用来继承基类的所有属性和方法。跟以前说到的原型链模式非常类似,只不过比原型更安全,也无须考虑参数问题。下面看看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中的继承机制5------zInherit
- 深入浅出理解Javascript原型概念以及继承机制
- Javascript继承机制的设计思想
- Javascript继承机制的设计思想[转载]
- JavaScript不使用prototype和new实现继承机制
- javascript 继承的两种方式
- JavaScript原型继承之基础机制(转)
- Javascript继承机制的设计思想
- Javascript继承机制总结
- Javascript继承机制的设计思想
- Javascript继承机制的设计思想
- Javascript继承机制的设计思想
- JavaScript继承机制模拟实现
- javascript继承(五)—prototype最优两种继承(空函数和循环拷贝)
- javascript基础6-对象继承机制实现
- JavaScript面向对象的继承机制实现方式
- 重温Javascript继承机制
- JavaScript继承机制之prototype, __proto__, constructor
- javascript继承机制
- JavaScript基于面向对象之继承机制