JavaScript类的继承方法小结【组合继承分析】
2018-07-11 14:12
806 查看
在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程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 继承窗体搭建组合查询模板方法的幸福之家
- IE iframe的onload方法分析小结
- MySQL定期分析检查与优化表的方法小结
- 类小结1:方法重载 变量 封装 import 继承 重写父类方法 调用父类构造方法 多态
- 如何实现在已有代码之后添加逻辑之继承,组合(静态代理)实现方法
- 走向开源代码分析第一步,准备,思路和方法小结
- MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- Chromium界面分析小结(七)图片资源管理方法
- JavaScript类数组对象转换为数组对象的方法实例分析
- mysql服务器查询慢原因分析与解决方法小结
- 网络流(最小割)问题中的基础构图及分析方法小结
- Chromium界面分析小结(八)字符串资源管理方法
- 软件逆向分析方法小结
- 网络流(最小割)问题中的基础构图及分析方法小结
- win2k3SP2,VS2005SP1,SQL2005SP2整合方法分析小结第1/3页
- MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- js面向对象小结(工厂模式,构造函数,原型方法,继承)
- 使用WireShark分析HTTP协议时几种常见的汉字编码及其解码方法小结
- Python面向对象之继承和组合用法实例分析
- JavaScript中类的继承有哪些方法(组合继承进阶)