JavaScript中类的继承有哪些方法(组合继承进阶)
来源:互联网 发布:手机麻将源码带房卡 编辑:程序博客网 时间:2023/11/29 04:09
在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对象,实现原型的深度拷贝,双方互不影响
阅读全文
0 0
- JavaScript中类的继承有哪些方法(组合继承进阶)
- javascript有哪些方法能够实现继承
- JavaScript中继承(三) -- 组合继承
- JavaScript的继承--组合继承
- javascript中实现类继承的方法
- JavaScript 继承---组合继承
- javascript 的 继承(三) 之 组合继承
- javascript继承类的方法
- 类的继承/组合
- 11.UE4中类的继承进阶
- C++中类的继承和组合
- JavaScript的继承方法
- JavaScript的继承方法
- JavaScript中继承的实现方法
- Javascript中继承的实现方法
- Javascript中继承的实现方法
- JavaScript中实现继承的而方法
- css的继承性--有哪些属性继承
- 策略模式
- 高数 06.03 积分习题课03测试题
- 百度地图
- 性能测试应该关注的指标
- LeetCode 87. Scramble String
- JavaScript中类的继承有哪些方法(组合继承进阶)
- python basemap 画图案例
- 多线程练习
- ajax的post提交参数长度超出限制
- SpringMVC 对请求参数的设置
- 注册页面
- 堆和栈的区别
- 中位数
- java 多线程-实例数据交换器 Exchanger