欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript继承

程序员文章站 2022-06-15 13:41:01
...

一、概述

 JavaScript中,继承是基于原型链的,本文简单归纳几种继承方法。以以下Animal、Cat分别为父、子构造函数。

function Animal(物种){
  this.物种=物种;
}
Animal.prototype={
  run:function(){
    console.log("动物跑")
  }
}
function Cat(name){
  this.name=name
}
Cat.prototype.say=function(){
  console.log("喵");
}

二、构造函数的继承

 如果只需要实现构造函数的继承,可以直接在子构造函数中引用父构造函数。

function Cat(name){
   Animal.call(this,"猫");
  this.name=name;
}
var cat1=new Cat("小白");
console.log(cat1.物种);//"猫"
console.log(cat1.run());//error,因为未继承Animal的prototype.

三、prototype的继承

 实现prototype的继承,只需要使Cat.prototype.__proto__=Animal.prototype,但是由于__proto__不被推荐,且兼容性也不行(IE11以上),我们可以使用:

  1. Cat.prototype=Object.create(Animal.prototype)Object.create()兼容IE9以上,注意此法会清空Cat.prototype,此法可与构造函数的继承配合使用。
  2. Cat.prototype=new Animal("猫")注意,此法会使Cat.prototype中有Animal构造函数运行后的属性、方法,属性方法嵌套层次较深,建议使用下一种方法。
FakeAnimal=function(){};
FakeAnimal.prototype=Animal.prototype;
Cat.prototype=new FakeAnimal();

 此处以空构造函数为中介,Cat.prototype中不会有Animal构造函数运行后的属性、方法,此法也会清空原来的Cat.prototype,此法可与构造函数的继承配合使用。

四、总结

 JavaScript继承当然不止这几种方法,这里只是简单介绍了几种基础方法便于自己掌握。