JS中的继承

继承是面向对象思想中的重要概念,继承是类和类之间的关系,它使得子类具有了父类别的各种属性和方法。而 JavaScript 中没有类的概念,那么我们要写出继承,还得先写一个类,那么类到底是什么呢:能产生对象的东西即为类。

JS中的继承

es5写法

function Human(name){
     this.name = name
 }
 Human.prototype.run = function(){
     console.log("我叫"+this.name+",我在跑")
     return undefined
 }

 function Man(name){
     Human.call(this, name)
     this.gender = '男'
 }
 Man.prototype.__proto__ = Human.prototype
 Man.prototype.fight = function(){
     console.log('糊你熊脸')
 }

 // 由于ie不兼容性__proto__
 Man.prototype.__proto__ = Human.prototype
 // 转换为
 var f = function(){}
 f.prototype = Human.prototype
 Man.prototype = new f()

es6的写法

class Human{
     constructor(name){
         this.name = name
     }
     run(){
         console.log("我叫"+this.name+",我在跑")
         return undefined
     }
 }
 class Man extends Human{
     constructor(name){
         super(name)
         this.gender = '男'
     }
     fight(){
         console.log('糊你熊脸')
     }
 }

es5写法 和 es6写法 的区别

class 后面写 extends 再接着写你的父类,用extends连上原型链,这里等价于 Man.prototype.__proto__ = Human.prototype
super(name) 对应 Human.call(this, name),表示调用 Human,这样去调用你的父类的构造函数,让他把 name 填一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaS...
    George_Wm阅读 1,556评论 0 0
  • ----欢迎查看我的博客---- 继承   继承,这个词可能在静态语言听得比较多。今天主要讲讲js的继承,我们先来...
    WEB_Jorie阅读 616评论 0 0
  • 方式一、原型链继承 分析: 这种方式实现的本质是通过将子类的原型指向了父类的实例,子类的实例就可以通过proto访...
    tency小七阅读 249评论 0 0
  • # 概述 本文主要记录js中实现继承的几种方法的实现,优缺点分析 # 知识铺垫 + **构造函数,原型和实例的关系...
    HLE阅读 652评论 0 0
  • 要使一个子类继承父类,需要两步实现:第一:继承父类自身的属性和方法第二:继承父类原型上的方法 "父类自身"属性和方...
    放风筝的小小马阅读 223评论 0 0