javascript中的继承

来源:互联网 发布:毕业摄影的数据 编辑:程序博客网 时间:2024/06/05 03:30

咱们伟大的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对象的继承方式


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



0 0
原创粉丝点击