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>



ES6中class的继承的更多相关文章

  1. ES6中的类继承和ES5中的继承模式详解

    1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...

  2. ES6中的CLASS继承

    ES6中的CLASS继承:https://www.jianshu.com/p/3d3d52b47762 es6 javascript的Class 类的继承:https://blog.csdn.net/ ...

  3. ES6中Class的继承关系

    es5实现中,每个对象都有__proto__属性(也就是关系图中[[prototype]]属性),指向对应的构造函数的prototype.Class 作为构造函数的语法糖,同时有prototype属性 ...

  4. ES6中的类

    前面的话 大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5.由于类似的库层出不穷,最终还是在ECMAScri ...

  5. ES5和ES6中的继承 图解

    Javascript中的继承一直是个比较麻烦的问题,prototype.constructor.__proto__在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固.ES6中又新增了c ...

  6. ES5和ES6中对于继承的实现方法

    在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...

  7. ES6中的类和继承

    class的写法及继承 JavaScript 语言中,生成实例对象的传统方法是通过构造函数.下面是一个例子     function Point(x, y) {  this.x = x;  this. ...

  8. ES5与ES6中的继承

    ES5继承在ES5中没有类的概念,所以一般都是基于原型链继承,具体的继承方法有以下几种: 父类: function Father (name) { this.name = name || 'sam' ...

  9. ES5和ES6中的继承

    看到一篇写的非常好的关于js继承的文章,其中对构造函数.原型.实例之间的关系的描述十分透彻,故转载作者文章以随时学习,并供大家共同进步! ES5 ES5中的继承,看图: function Super( ...

随机推荐

  1. LCT(Link-Cut-Tree)

    LCT(Link-Cut-Tree) LCT维护一个森林,即把每个节点用splay维护,可以进行许多操作: 查询.修改链上的信息 随意指定原树的根(即换根) 动态连边.删边 合并两棵树.分离一棵树 动 ...

  2. P5110 块速递推-光速幂、斐波那契数列通项

    P5110 块速递推 题意 多次询问,求数列 \[a_i=\begin{cases}233a_{i-1}+666a_{i-2} & i>1\\ 0 & i=0\\ 1 & ...

  3. SQL注入之二次,加解密,DNS等注入

    #sql注入之二次注入 1.注入原理 二次注入可以理解为,构造恶意数据存储在数据库后,恶意数据被读取并进入到了SQL查询语句所导致的注入.恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当 ...

  4. 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...

  5. friend靶机

    仅供个人娱乐 靶机信息 https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 一.主机探测 二.信息收集 访问一下web站点,提示只能从本 ...

  6. Bugku-misc 1-8题总结

    1.签到题 略过 2.这是一张单纯的图片 拉入winhex,在最后面有一段Uniocde编码,解码得到flag. 3.隐写 题目是隐写,binwalk打开分析 得到两个Zlib(提供数据压缩用的函式库 ...

  7. windows本地挂载HDFS

    1.修改配置文件 进入配置文件目录: cd ${HADOOP_HOME}/etc/hadoop 修改core-site.xml: vim core-site.xml 在文件中增加以下内容: <p ...

  8. 腾讯技术团队整理,为什么 Flutter 能最好地改变移动开发

    导语 | Flutter 框架是当下非常热门的跨端解决方案,能够帮助开发者通过一套代码库高效构建多平台精美应用,支持移动.Web.桌面等多端开发.但仍然有很多产品.设计.甚至开发同学并不了解 Flut ...

  9. 还怕问源码?Github上神级Android三方源码解析手册,已有7.6 KStar

    或许对于许多Android开发者来说,所谓的Android工程师的工作"不过就是用XML实现设计师的美术图,用JSON解析服务器的数据,再把数据显示到界面上"就好了,源码什么的,看 ...

  10. 代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七)

    代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对 ...