最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

原型继承的几种方式介绍

来源:动视网 责编:小采 时间:2020-11-27 20:12:02
文档

原型继承的几种方式介绍

原型继承的几种方式介绍:原型继承父级: function Parent(name){ this.name=name; } Parent.prototype.sayHello=function(){ console.log("Hello,"+this.name); }原型链继承function Kid(){}; Kid.prototype=new Pare
推荐度:
导读原型继承的几种方式介绍:原型继承父级: function Parent(name){ this.name=name; } Parent.prototype.sayHello=function(){ console.log("Hello,"+this.name); }原型链继承function Kid(){}; Kid.prototype=new Pare


原型继承

父级:

 function Parent(name){
 this.name=name;
 }
 Parent.prototype.sayHello=function(){
 console.log("Hello,"+this.name);
 }
  1. 原型链继承

    function Kid(){};
    Kid.prototype=new Parent("who");
    
    var k=new Kid();
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    弊端:创建实例时无法向父级传参

  2. 构造继承

    function Kid(name){
     Parent.call(this,name);
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //error

    弊端:无法获取父级原型链属性

  3. 实例继承

    function Kid(name){
     var p=new Parent(name);
     return p;
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    弊端:实例是父级的实例

  4. 拷贝继承

    function Kid(name){
     var p=new Parent(name);
     for(var item in p){
     Kid.prototype[item]=p[item];
     }
    }
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    弊端:太占用内存

  5. 组合继承

    function Kid(name){
     Parent.call(this,name);
    }
    Kid.prototype=new Parent();
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    弊端:调用了两次父类构造函数

  6. 寄生组合继承

    function Kid(name){
     Parent.call(this,name);
    }
    (function(){
     var p=function(){};
     p.prototype=Parent.prototype;
     Kid.prototype=new p();
    })()

    弊端:写法比较繁琐

文档

原型继承的几种方式介绍

原型继承的几种方式介绍:原型继承父级: function Parent(name){ this.name=name; } Parent.prototype.sayHello=function(){ console.log("Hello,"+this.name); }原型链继承function Kid(){}; Kid.prototype=new Pare
推荐度:
标签: 三种 种方式 原型
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top