extends 子类的继承
super(); 调用父类的构造方法,只能在子类中执行

继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等
父类(基类)——被继承的类
子类——继承后的类
1.extends(关键字) 子类的继承 ----------extends +要继承的类名
2.super(参数); 实际是调用父类构造函数, 只能在子类中执行; 必须在类中的构造函数constructor中使用super( )且必须在this前;
super(参数)---参数传给父类;
3.子类可以调用父类的方法

super的不仅可以用来访问对象的原型,还可以作为父类的构造函数来调用,所以在继承的时候,在子类的constructor中,调用super方法,可以让子类把父类的属性和方法继承过来,这样子类才会拥有父类的属性和方法(走一遍父类的属性,就是为了继承它们)。
在class的继承中,只能使用super,不能使用“Object.setPrototypeOf()”,这是es6规定好的语法,我们只能按照它的规定来写,将其当成固定的语法记住就行。
 
 
定义在类中的方法是添加到当前类对应的原型对象上,并不会影响到父类,所以其他子类也无法使用第一个子类中的方法。

 
 
一般在class类中,this指向实例化后的对象
 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ES6中class的继承</title>
</head>
<body> <script> //继承 //继承可以让子类获得父类的方法 属性
//可以扩充 增加新的方法 属性等 //父类(基类) —— 被继承的类
//子类 —— 继承后的类 //继承在Es6中的关键字 extends
class Human{
constructor(name,age,sex,hobby){
this.name = name;
this.age = age;
this.sex = sex;
this.hobby = hobby;
}
desc(){
//数组的解构赋值看顺序,对象的解构赋值看变量名是否一致
const { name, age, sex, hobby } = this; //这里的this是什么?
//使用解构的方式获取到,后面才能打印
console.log(`我叫${name},性别${sex},爱好${hobby},今年${age}岁`)
} eat(){
console.log('吧唧吧唧')
}
} //子类,必须在子类的构造函数中调用super()
class FEEngineer extends Human{
constructor(name,age,sex,hobby,skill,salary){
//super其实就是父类的构造函数
//在子类的构造函数中,必须在调用this之前去调用super
super(name,age,sex,hobby);
this.skill = skill;
this.salary = salary;
}
say(){
console.log(this.skill.join(','))
}
} const feer = new FEEngineer(
'张三',
24, //为什么age写'24'会报错?
'男',
['打游戏','写代码'],
['es6','vue','react','webgl'],
'1w')
console.log(feer); feer.desc();
feer.eat();
feer.say() //extends的应用 网游中的职业系统
//基类 基础的职业类 代表一个角色
//子类 代表一个具有职业的角色
class Character{
constructor(name,sex){
this.name = name;
this.sex; this.skill = [];
}
} class Wizard extends Character{
constructor(name,sex){
super(name,sex); this.initSkill(); //还没有实例化Wizard时,initSkill已经添加到原型对象上了,所以不管类中initSkill方法是写在constructor前面还是后面,都可以在constructor中通过this访问到
} initSkill(){
this.skill = [
{
name:'阿瓦达索命',
mp:666,
level:999
},
{
name:'守护神咒',
mp:333,
level:888
}
];
}
} </script>
</body>
</html>



最新文章

  1. ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
  2. js动态加载以及确定加载完成的代码
  3. 轻松自动化---selenium-webdriver(python) (三)
  4. Git笔记 整理2
  5. 引擎设计跟踪(九.8) Gizmo helper实现与多国语言
  6. Dicom格式文件解析器
  7. CentOS下源码安装Apache2.4+PHP5.4+MySQL5.5
  8. hdfs 常用命令
  9. 接上一篇博客(解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. )
  10. 多图真相:Adobe Dreamweaver CC 2014.1来了-体验卓越PSD提取和诸多精彩云功能!
  11. 左右mysql事务提交
  12. discuz 7.2 faq.php sql注入了一些研究
  13. oracle数据库--序列(sequence)
  14. eclipse springmvc+Thymeleaf
  15. discuz 模板中使用方法和语言标签
  16. 如何在宿主机上执行容器里的jmap,jtack,jstat 命令获取信息(原创)
  17. JavaScript之正则表达式[应用实例]
  18. centos7下安装rabbitmq
  19. Extjs4 store load 有中文字符提交后台乱码解决方法
  20. java通过反射调用有参数的方法

热门文章

  1. 扩展中国剩余定理(exCRT)
  2. Spring Cloud Alibaba基础教程:Sentinel
  3. 用QT写的简单Todo记事本-附源码(浮动窗口)
  4. js控制单选按钮选中某一项
  5. Java的equsals和==
  6. 几个垃圾XSS
  7. python自动化之(自动化测试报告)
  8. javaScript学习关于节点
  9. STM32启动代码分析及其汇编学习-ARM
  10. miniFTP项目实战一