解析JavaScript寄生组合继承的原理和用法
本文举例说明了JavaScript寄生组合继承。分享给大家参考,如下:
寄生组合遗传
寄生组合继承是指通过锻造对象来继承属性,通过混合原型链来继承方法。
这项技术的基本思想是:不需要为了指定子类型的原型而调用超类型的构造函数,因为我们需要的只是超类型原型的副本(这恰恰是组合继承的问题,也是JavaScript这种原型语言的强项,直接复制对象——原型对象)。本质上,寄生继承用于继承超类型的原型,然后将结果赋给子类型的原型。
函数inheritPrototype(subType,SuperType){ var prototype=object . create(SuperType . prototype);//创建prototype.constructor=subType的原型副本;//修改原型副本的不同属性subType.prototype=prototype//指定prototype}函数supertype (name) {this。name=namethis.colors=['red ',' blue ',' green '];} SuperType . prototype . SayName=function(){ console . log(this . name);}function SubType(name,age){ //继承属性SuperType.call(this,name);//实例属性this.age=age}//继承方法inheritprototype(子类型,超类型);subtype . prototype . Sayage=function(){ console . log(this . age);};var instance 1=new SubType(' Nicholas ',29);instance 1 . colors . push(' black ');console . log(instance 1 . colors);//'红、蓝、绿、黑' instance 1 . say name();//' Nicholas ' instance 1 . sayage();//29在这里,使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun对上述代码进行测试,可以得到如下运行结果:
这是最简单的寄生组合遗传形式。该函数采用两个参数:
1.子类型构造函数2。超类型构造函数
在函数内部,寄生组合遗传的最简单形式分为三个步骤:
1.创建超类型原型的副本;2.为创建的副本指定构造函数属性,以弥补由于重写SubType原型而丢失的默认构造函数属性。此原型副本的构造函数属性更改:super typesubtype;3.将完美的副本分配给子类型的原型。
寄生组合遗传的示意图如下:
寄生组合继承的高效率在于它只调用SuperType构造函数一次,从而避免在SubType.prototype上创建不必要的冗余属性,同时原型链可以保持不变。
有关JavaScript的更多信息,请查看本网站的专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》和《JavaScript数学运算用法总结》
希望本文对JavaScript编程有所帮助。
版权声明:解析JavaScript寄生组合继承的原理和用法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。