总结各种继承

JavaScript各种继承方式总结
本文总结了JavaScript中的多种继承方式,包括接口继承、实现继承。实现继承又涵盖原型链、借用构造函数、组合继承、原型继承、寄生式继承和寄生组合式继承,介绍了各方式的基本思想、实现模式、存在的问题等,其中寄生组合继承较为高效。

继承包括:

  • 接口继承
  • 实现继承

1.原型链
基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法。
假如我们让原型对象等于另一个类型的实例,会这样呢?
这时当前原型就是另一个类型的实例,并且它还有一个指针指向了另一个原型对象,另一个原型对象也会有一个指针指向了另一个构造函数。假如另一个原型又是另一个类型的实例,那么上述的关系依然成立,层层递进,就构成了实例和原型的链条。这就是所谓原型链的基本概念。
实现原型链有一种基本模式:
重点代码:

SubType.prototype = new SuperType()

原型链的问题是:

  • 最主要的问题来自于包含引用类型值的原型。
  • 第二个问题是在创建子类型的实例时,不能向超类型的构造函数传递参数。

于是就有了借用构造函数的诞生:
2.借用构造函数
基本思想:在子类型的构造函数调用超类型的构造函数。

function SubType(){
	//继承
	SuperType.call(this);
}

借用构造函数的问题:

  1. 方法都是在构造函数中定义的,因此无法复用。
  2. 在超类型的原型中定义的原型方法对于子类型中都是不可见的,结果所有类型都只能使用构造函数模式。

3.组合继承
组合继承也叫做伪经典继承,指的是将原型链和借用构造函数的技术整合在一起,发挥它们的长处。
其思想是:使用原型链实现对原型属性和方法的继承,而通过借用构造函数实现对实例属性的继承。

function SubType(){
	SuperType.call(this);
}
SubType.prototype = new SuperType();

组合继承避免了原型链和借用构造函数的缺点,融合了它们的有点,因此也是JavaScript最常用的继承模式。
4.原型继承
道格拉斯在一遍文章上介绍了一种实现继承的方法,这种方法并没有严格意义上的构造函数。
他的想法是:借助原型在已有对象上创建新的对象,同时还不必因此创建自定义类型。

function obect(o){
	function F(){}
	F.prototype = o;
	return new F()
}

在没有必要兴师动众地创建构造函数,而只想让一个对象和另一个对象保持类似的情况下,原型式继承是完全可以胜任的。
不过别别忘了,包含引用类型值的属性始终都会共享相应的值,就像使用原型模式一样。
5.寄生式继承
思路:与寄生构造函数模式和工厂模式类似,即创建一个用于封装继承过程的函数,该函数在内部以某种方式增强,最后再像是真地是它做了所有工作一样返回对象。

function createAnother(original){
		var clone = object(original);
		clone.sayHi = funciton(){
			console.log('Hi);
		}
		return clone;
}

在主要考虑对象而不是自定义类型和构造函数的情况下,寄生式也是一种有用的模式。
6.寄生组合式继承
前面说过组合继承是JavaScript最常用的继承,但它也是有问题的,问题在于调用了两次超类型的构造函数,

  • 一次在子类型的原型上
  • 一次在调用子类型的构造函数中。

所谓寄生组合继承,即通过借用构造函数继承属性,通过原型链混成的方式来继承方法。
其背后的思想是:不必为了指定子类型的原型而调用超类型的构造函数,我们所需要的无非就是超类型原型的一个副本而已,本质上就是使用寄生式继承来继承超类型的原型,然后再将结果指定给子类型的原型。

function inheritPrototypetype(SubType,SuperType){
	var prototype = object(SuperType.prototype);
	prototype.constructor = SubType;
	SubType.prototype = prototype;
}

寄生组合继承的高效之处就是只调用了一次超类型构造函数。

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值