手机版

继承JavaScript的四种方法概述

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

尽管JavaScript没有给出继承的关键字,但我们仍然可以想出一些好的方法来实现它们。

1、原型链继承:

复制代码如下: varbase=function () {this。level=1;this.name=' basethis . ToString=function(){ return ' base ';};};基地。常数='常数';var Sub=function(){ };子原型=新基础();sub . prototype . name=' sub ';

优点:从关键字instanceof来看,实例不仅是父类的实例,也是子类的实例,这似乎是最纯粹的继承。

缺点:子类不同于父类的属性和方法,必须在sub prototype=new Base();这样的语句是单独执行的,不能包装在构造函数Sub中。示例:sub . prototype . name=" sub ";多重继承无法实现。

2.结构继承:

复制代码如下: varbase=function () {this。level=1;this.name=' basethis . ToString=function(){ return ' base ';};};基地。常数='常数';var Sub=function(){ base . call(this);this.name=' sub};

优点:可以实现多重继承,子类的特殊属性设置可以放在构造函数内部。

缺点:使用instanceof发现,对象不是父类的实例。

3.实例继承:

复制代码如下: varbase=function () {this。level=1;this.name=' basethis . ToString=function(){ return ' base ';};};基地。常数='常数';var Sub=function(){ var instance=new Base();instance.name=' sub返回实例;};

优点:是父类的对象,用new构造对象和不用new构造对象可以得到同样的效果。

缺点:生成的对象只是父类的一个实例,不是子类对象;不支持多重继承。

4.复制继承:

复制代码如下: varbase=function () {this。level=1;this.name=' basethis . ToString=function(){ return ' base ';};};基地。常数='常数';var Sub=function(){ var Base=new Base();对于(基础中的变量I)子原型[i]=基础[I];sub . prototype[' name ']=' sub ';};

优点:支持多重继承。

缺点:效率低;无法获取父类的不可枚举方法。

这些形式各有特点。就我提供的代码而言,它们符合下表:

2012-1-10:补充,如果不需要类继承,只需要对象继承。对于支持ECMAScript 5的浏览器,我们也可以使用Object.create方法来实现这一点:

复制代码如下: varbase=function () {this。level=1;this.name=' basethis . ToString=function(){ return ' base ';};};基地。常数='常数';var sub=Object.create(新的Base());sub.name=' sub

版权声明:继承JavaScript的四种方法概述是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。