JS继承的实现方式

父类:

// 定义一个动物类
function Animal (name) {
  // 属性
  this.name = name || 'Animal';
  // 实例方法
  this.sleep = function(){
    console.log(this.name + '正在睡觉!');
  }
}
// 原型方法
Animal.prototype.eat = function(food) {
  console.log(this.name + '正在吃:' + food);
};

  

1.原型链继承

function Cat(){ 
}
Cat.prototype = new Animal();
Cat.prototype.name = 'cat';

  

2.构造继承 call

function Cat(name){
  Animal.call(this);
  this.name = name || 'Tom';
}

  

5.组合继承

function Cat(name){
  Animal.call(this);
  this.name = name || 'Tom';
}
Cat.prototype = new Animal();

6寄生组合继承

function Cat(name){
  Animal.call(this);
  this.name = name || 'Tom';
}
(function(){
  // 创建一个没有实例方法的类
  var Super = function(){};
  Super.prototype = Animal.prototype;
  //将实例作为子类的原型
  Cat.prototype = new Super();
})();

  

3.实例继承 

var instance = new Animal();
function Cat(name){
  var instance = new Animal();
  instance.name = name || 'Tom';
  return instance;
}

  

 

4.拷贝继承

var instance = new Animal();再遍历复制
function Cat(name){
  var animal = new Animal();
  for(var p in animal){
    Cat.prototype[p] = animal[p];
  }
  Cat.prototype.name = name || 'Tom';
}

  




猜你喜欢

转载自www.cnblogs.com/fm060/p/8962061.html
今日推荐