美文网首页
js 中的几种继承方法

js 中的几种继承方法

作者: McDu | 来源:发表于2017-07-30 17:26 被阅读85次

1. 原型链继承:方法的原型是某个类的实例,即可继承这个类的所有属性和方法。父类私有和公有的属性都变为子类公有的。( 因为子类和父类还有联系,子类.proto 可以修改原型链上的属性,所有出现了以下四种继承法?)

function A(){
  this.x = 100;
}
A.prototype.getX = function(){
  console.log(this.x);
};
function B(){
   this.y = 200;
}
B.prototype.sayHello = function(){
  console.log(20000);
};
B.prototype = new A();
B.prototype.constructor = B;
function C(){
  this.c = 300;
}
C.prototype.sayC = function(){
  console.log("ccc");
}
C.prototype = new B();

2. call 继承:把父类私有的变为子类私有的。

function A(){
  this.x = 100;
}
function B(){
  A.call(this);
}
var n = new B();
n.x;  // 100

3. 冒充对象继承:把父类私有的和公有的克隆一份给子类作为私有。

function A(){
  this.x = 100;
}
A.prototype.getX = function(){
    console.log(this.x);
}
function B(){
  var temp = new A();
  for(var key in temp){    
    this[key] = temp[key];   
  }
  temp = null;
}
var n = new B();

4. 混合模式继承:原型继承 + call 继承,父类私有的变为子类私有的,父类私有和共有的都变为子类公有的。

function A(){
  this.x = 100;
}
A.prototype.getX = function(){
    console.log(this.x);
}
function B(){
  A.call(this);
}
B.prototype = new A();  // B.prototype.x = 100   私有属性重复继承。
B.prototype.constructor = B;
var n = new B();
n.getX();

5. 寄生组合式继承:父类私有的变为私有的(call 继承),父类公有的变为子类公有的。

function A(){
  this.x = 100;
}
A.prototype.getX = function(){
    console.log(this.x);
}
function B(){
  A.call(this);
}
//B.prototype = Object.create(A.prototype);
B.prototype = objectCreate(A.prototype); // 兼容
B.prototype.constructor = B;
var n = new B();
n.getX();

function objectCreate(o){
  function Fn(){}
  Fn.prototype = o;
  return new Fn();
}

相关文章

  • js 中的几种继承方法

    1. 原型链继承:方法的原型是某个类的实例,即可继承这个类的所有属性和方法。父类私有和公有的属性都变为子类公有的。...

  • 我碰到的前端面试题(js)

    1.js实现继承有哪几种方法? 方法一:原型链继承 方法二: 构造函数继承 方法三: 组合继承 2.this指向问...

  • 分分钟学会继承

    这是我见到的几种js继承方法,如果有文章中没有提及的,希望可以分享共同学习 (一)原型链继承 function P...

  • 前端菜鸟成长记(三)之answer

    关于上次作业的答案 js有几种实现继承的方法(我直接给答案,原型链继承,借用构造函数继承,组合继承)?各自的优缺点...

  • 03.js中的继承

    # 概述 本文主要记录js中实现继承的几种方法的实现,优缺点分析 # 知识铺垫 + **构造函数,原型和实例的关系...

  • [读] JS中的call()和apply()方法

    JS中的call()和apply()方法 实现继承 多重继承

  • 聊一聊js的几种继承方式

    在js中, 很多地方需要使用到继承, 废话少说, 今天来聊一聊js几种继承方式的优缺点 构造函数继承functio...

  • JavaScript 继承

    继承是JS中非常内容,原因就是JS没有地道的继承方式,我们只能通过各种方式来模拟面向对象中的继承。下面介绍几种常见...

  • JS继承

    JS继承的几种实现方式 继承是指子类继承父类的属性和方法,要实现继承,首先我们需要有一个父类 原型链继承 原型链继...

  • Js中的几种继承方式?

    直接从代码中看

网友评论

      本文标题:js 中的几种继承方法

      本文链接:https://www.haomeiwen.com/subject/gzqklxtx.html