时间:2021-05-26
本文实例讲述了JavaScript类的继承方法。分享给大家供大家参考,具体如下:
在JavaScript 里,被继承的函数称为超类型(父类,基类也行,其他语言叫法),继承的函数称为子类型(子类,派生类)。继承也有之前问题,比如字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数。
为了解决引用共享和超类型无法传参的问题,我们采用一种叫借用构造函数的技术,或者成为对象冒充(伪造对象、经典继承)的技术来解决这两种问题。
function aObj(){ this.name = ['小红','小强']; }}aObj.prototype.showname = ()=>{ alert(this.name)}function bObj(){ aObj.call(this); //只针对构造函数本身的继承 还需要继承原型}借用构造函数虽然解决了函数本身的继承,但没有继承原型链。所以,我们需要原型链+借用构造函数的模式,这种模式称为组合继承。
方法一:
bObj.prototype = aObj.prototype;缺点:引用类型,在操作对象原型时候,直接改变堆内存中对象的方法
方法二:
bObj.prototype = new aObj();这种继承借助原型并基于已有的对象创建新对象,同时还不必因此创建自定义类型,但是构造函数两次继承,不是很好
方法三:
bObj.prototype = Object.create(aObj.prototype);bObj.prototype.constructor = bObj使用a原型对象及其属性去创建一个新的对象,并将这个对象的constructor指向B函数本身,不存在重复继承的问题
方法四:
for (var i in aObj.prototype) { bObj.prototype[i] = aObj.prototype[i];}将a的原型链遍历给b对象,实现原型的深度拷贝,双方互不影响
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
javascript中的继承实例详解阅读目录原型链继承借用构造函数组合继承寄生组合式继承后记继承有两种方式:接口继承和实现继承。接口继承只继承方法签名,而实现继
在之前javascript面向对象系列的文章里面,我们已经探讨了组合继承和寄生继承,回顾下组合继承:functionPerson(uName){this.ski
本文实例讲述了JavaScript寄生组合式继承。分享给大家供大家参考,具体如下:寄生组合式继承寄生组合式继承,就是通过伪造对象来继承属性,通过原型链的混成形式
Python类的继承详解Python既然是面向对象的,当然支持类的继承,Python实现类的继承比JavaScript简单。Parent类:classParen
在本章中,我们将分析Prototypejs中关于JavaScript继承的实现。Prototypejs是最早的JavaScript类库,可以说是JavaScri