JS继承的几种方式

关于Js继承的几种方式,总结一下,以便查看。

第一种 prototype 引用型原型继承

语言支持:js原生支持的继承方式 构造器的的prototype属性作为类的原型 每个该类的对象都持有一个到原型的引用 当对象中的属性不存在时 可以访问原型的属性

代码示例:

function parent(){

      this.x=10;

}

function child(){

}

child.prototype=new parent();

var childObj=new child();

alert(childObj.x);

第二种 复制型原型继承

语言支持:js new运算符的性质 当构造函数return值为非空对象时 new表达式返回return的对象

代码示例:

function parent(){

        this.x=10;

}

function child(){

      var ret=new parent();

      ret.y=20;

      return ret;

}

var childObj=new child();

alert(childObj.x);

第三种 类继承 属性抄写

语言支持:for in枚举对象所有属性

代码示例:

function parent(){

        this.x=10;

}

function child(){

      var parentObj=new parent();

      for(var p in parentObj){

              this[p]=parentObj[p];

      }

}

var childObj=new child();

alert(childObj.x);

第四种 类继承 对象冒充

语言支持:

1.动态添加和删除方法

2.函数的call和apply

代码示例:

function parent(){

        this.x=10;

}

function child(){

        this.parent=parent;

        this.parent();

        delete this.parent;

}

var childObj=new child();

alert(childObj.x);

function parent(){

        this.x=10;

}

function child(){

          parent.call(this);

}

var childObj=new child();

alert(childObj.x);

第五种 原型抄写

语言支持:通过修改类的原型对象 可以为一类对象添加属性和方法

代码示例:

function parent(){}

parent.prototype.me=function(){

        alert("parent")

};

function child(){}

for(var p in parent.prototype){

                child.prototype[p]=parent.prototype[p];

}

var childObj=new child();

childObj.me();

第六种 元类

语言支持: js函数都是对象 且js函数可被构造

代码示例:

function parent(string){

        var child=new                                          Function("this.x=10;"+string);   

        return child;

}

var child=new parent("this.y=20;");

var childObj=new child();

alert(childObj.y);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容