2019-06-18 JS 中继承的写法

  1. 使用 prototype 如何继承
       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 = '男'
       }

       var f = function(){}
       f.prototype = Human.prototype
       Man.prototype = new f()

       Man.prototype.fight = function(){
           console.log('糊你熊脸')
       }
  1. 使用 class 语法糖如何继承

     ```
      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('糊你熊脸')
          }
      }
    
3. 上面两个方法的区别

ES5中:

利用借用构造函数实现 实例属性和方法的继承 ;
利用原型链或者寄生式继承实现 共享的原型属性和方法的继承 。

ES6中:

利用class定义类,extends实现类的继承;
子类constructor里调用super()(父类构造函数)实现 实例属性和方法的继承;
子类原型继承父类原型,实现 原型对象上方法的继承。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 要知道如何继承前,我们需要搞清楚什么是继承,当我们查维基百科的时候,可以看到 这样一句话 「继承可以使得子类具有父...
    U17阅读 3,744评论 0 0
  • 1. 继承 简介一层原型链搜索不叫继承,两层原型链的搜索才叫继承let a = new Array();a.__p...
    彭奕泽阅读 1,355评论 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,173评论 0 10
  • 继承6种套餐 参照红皮书,JS继承一共6种 1.原型链继承 核心思想:子类的原型指向父类的一个实例 Son.pro...
    灯不梨喵阅读 8,360评论 1 2
  • 选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaS...
    George_Wm阅读 5,431评论 0 0

友情链接更多精彩内容