JS中继承的写法

继承的两种写法

i.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.prototye = new f()

   Man.prototype.fight = function(){
      console.log('糊你熊脸')
   }
}

ii.Class写法

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

iii.两种方法的区别

两种方法都能实现继承,本质上ES6继承是ES5继承的语法糖,会更简单些,但是假如要添加一个非函数的属性,比如“种族:人类”。
那么用 ES5 的方法会更方便操作,可以直接添加:

Human.prototype.种族 = '人类'

在 ES6 中只能用一种变通的方法来实现:

class Human {
   constructor(name){
      this.name = name
   }
   run(){
      console.log("我叫"+this.name+", 我在跑")
      return undefined
   }
   get 种族(){
      return '人类'
}
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是继承 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类...
    hzl的学习小记阅读 3,304评论 0 0
  • 继承是面向对象编程很重要的一个方面,让子类继承父类的某些属性和方法,是非常常见的需求。 prototype写法 假...
    灵魂治愈阅读 1,540评论 0 0
  • 继承是类和类之间的关系,继承使得子类别具有父类别的属性和方法。 js里常用的如下两种继承方式: 原型链继承(对象间...
    遠_阅读 4,125评论 0 0
  • 使用 prototype 如何继承 使用 class 语法糖如何继承 ``` class Human{ ...
    追夢的蚂蚁阅读 1,482评论 0 0
  • 下面做一个测试题: 写出一个构造函数 Animal 输入为空 输出为一个新对象,该对象的共有属性为 {行动: fu...
    饥人谷_刘氏熏肉大饼阅读 1,755评论 0 0