javascript中的继承

咱们伟大的javascript创始人布兰登.艾奇仅用10天时间就创造了一门这么伟大的语言,以至于真正认识了这门语言的时候,有种掉坑里的感觉。

闲话不多扯,虽然这门语言漏洞百出,但它是当今最流行的脚本之一,证明它的魅力还是蛮大的,下面我就说一下在这个语言中继承的主要实现方式。常用的分为两种:组合继承、寄生组合式继承

这是构造函数源代码

function TestA(){
	this.arr=[0,3,4];
}
TestA.prototype.getArr=function(){
	alert(this.arr);
}
function TestB(){
	TestA.call(this);
}

一、组合继承

var TestB.prototype=new TestA();
TestB.prototype.constructor=TestB;
var b=new TestB();
b.getArr();
*这种继承方式有一个明显的弊端:每继承一次都会在当前对象原型中复制不必要的属性和值,但是这是行业里比较多见的继承方式,大概只是因为这种方法比较简单


二、寄生组合式继承

function wrapObj(obj){
	var O=function(){};
	O.prototype=obj;
	return new O();
}//通过寄生式返回继承了obj对象的O对象
function inheritClass(A,B){
	var b=wrapObj(B.prototype);
	b.constructor=A;
	A.prototype=b;
}//通过原型式由A继承了B的原型方法(注意:此处没有继承属性)
inheritClass(TestB,TestA);
var b=new TestB();
b.getArr();

寄生组合式继承弥补了组合继承的弊端,可以省去给不必要的原型属性赋值,是目前比较科学的js对象的继承方式


总结:虽然这两种方式都可以实现继承,但是性能方面会有区别,具体使用哪种还要视项目而定



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值