美文网首页
JavaScript继承

JavaScript继承

作者: pz明 | 来源:发表于2017-08-08 15:43 被阅读7次

一、概述

 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继承当然不止这几种方法,这里只是简单介绍了几种基础方法便于自己掌握。

相关文章

  • 前端面试题目(二)

    javascript对象的几种创建方式 javascript继承的6种方法 详情:[JavaScript继承方式详...

  • 函数的原型对象

    什么是原型? 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。 函数的原型...

  • 005|JavaScript ES6新特性之Classes

    在过去,需要像 053|JavaScript 继承详解 那样实现继承。JavaScript这种继承实现方式与其它面...

  • Web前端经典面试试题及答案2

    javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。在JavaScript中实现继承...

  • 一文带你彻底理解 JavaScript 原型对象

    一、什么是原型 原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。 1.1 ...

  • javascript代码积累

    一、javascript实现继承 1.基于原型链实现继承 2.基于属性和方法复制实现继承 二、javascript...

  • 理解 JavaScript 中的原型链

    JavaScript 作为一门面对对象语言,但是却不支持接口继承,只支持实现继承。JavaScript 中实现继承...

  • Javascript原型和原型链

    JavaScript在ES6之前没有类似class,extend的继承机制,JavaScript的继承主要是通过原...

  • JavaScript--对象创建和继承方法

    JavaScript创建对象方法总结精彩博文javascript继承讲解精彩博文于江水 继承讲解 JavaScri...

  • JavaScript 继承

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

网友评论

      本文标题:JavaScript继承

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