类的继承
extends  connstructor  super
例1:
       class Father {
constructor(){}
money(){
console.log("10000块");
}
}
// 子类Son使用 extends 继承父类Father
class Son extends Father {}
var ss = new Father();
ss.money();
// 10000块

例2:

        class Fa {
constructor(x, y){
this.x = x;
this.y = y;
}
sum(){
var su = this.x + this.y;
console.log(su);
}
}
class Son extends Fa{
constructor(x, y){ // constructor用于存放类的共有属性
this.x = x;
this.y = y;
}
}
var son = new Son(1, 2);
son.sum();
// 输出:Uncaught ReferenceError: Must call super constructor in derived
class before accessing 'this' or returning from derived constructor

原因:

实例对象son中的参数(1,2)其实是指向子类Son中的constructor(x,y) 并非 父类Fa中的constructor(x,y) 所以无法使用sum()方法。

改进:

   super关键字 用于访问和调用父类上的构造函数。可以调用父类的构造函数,也可以调用父类的普通函数。
        class Fa {
constructor(x, y){
this.x = x;
this.y = y;
}
sum(){
var su = this.x + this.y;
console.log(su);
}
}
class Son extends Fa{
constructor(x, y){
super(x, y);// 调用了父类的构造函数constructor
}
}
var son = new Son(1, 2);
son.sum();
// 3

  扩展:super关键字调用父类的普通函数

例1:

class Fa{
say(){
return '父类';
}
}
class Son extends Fa{
say(){
console.log('子类');
}
}
var son = new Son();
son.say()
// 子类

用super关键字调用父类的普通函数

class Fa{
say(){
return '父类';
}
}
class Son extends Fa{
say(){
console.log(super.say() + "的子类");
}
}
var son = new Son();
son.say()
// 父类的子类
例2:
子类继承父类方法的同时 扩展减法方法
class Fa {
constructor(x, y){
this.x = x;
this.y = y;
}
sum(){
var su = this.x + this.y;
console.log(su);
}
}
class Son extends Fa{
constructor(x, y){
// 利用super调用父类的构造函数
// super 必须在子类this之前调用
super(x, y);
this.x = x;
this.y = y; }
// 减法方法
subtract(){
console.log(this.x - this.y);
}
}
var son = new Son(5,3);
son.subtract();// 2
son.sum(); // 8

  

 

JavaScript、ES6中的类的继承的更多相关文章

  1. ES6中。类与继承的方法,以及与ES5中的方法的对比

    // 在ES5中,通常使用构造函数方法去实现类与继承 // 创建父类 function Father(name, age){ this.name = name; this.age = age; } F ...

  2. ES6中的类和继承

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

  3. 前端知识体系:JavaScript基础-原型和原型链-理解 es6 中class构造以及继承的底层实现原理

    理解 es6 中class构造以及继承的底层实现原理 原文链接:https://blog.csdn.net/qq_34149805/article/details/86105123 1.ES6 cla ...

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

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

  5. koa 基础(十八)es6中的类、静态方法、继承

    1.app.js /** * es6中的类.静态方法.继承 */ // 定义Person类 class Person { constructor(name, age) { /*类的构造函数,实例化的时 ...

  6. Nodejs与ES6系列4:ES6中的类

    ES6中的类 4.1.class基本语法 在之前的javascript语法中是不存在class这样的概念,如果要通过构造函数生成一个新对象代码 function Shape(width,height) ...

  7. ES6中的类

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

  8. 160803、如何在ES6中管理类的私有数据

    如何在ES6中管理类的私有数据?本文为你介绍四种方法: 在类的构造函数作用域中处理私有数据成员 遵照命名约定(例如前置下划线)标记私有属性 将私有数据保存在WeakMap中 使用Symbol作为私有属 ...

  9. TypeScript完全解读(26课时)_8.ES6精讲-ES6中的类(进阶)

    8.TypeScript完全解读-ES6精讲-类(进阶) 在index.ts内引入 Food创建的实例赋值给Vegetabled这个原型对象,这样使用Vegetables创建实例的时候,就能继承到Fo ...

随机推荐

  1. 利用Django框架实现分页 demo

  2. 数位dp进阶(hdu2089,3652)

    之前的文章已经讲过如何求1—r中的特殊数,这篇博客就来讲些进阶操作: 直接看例题(hdu2089): (题目是中文的我就不写大意了) 这题与hdu3555最大的区别就是规定了l,不再以1开始: 解决这 ...

  3. git pull失误提交

    git pull 提示错误,Your local changes to the following files would be overwritten by merge 到公司后本来打算git pu ...

  4. 树莓派安装配置teamviewer host

    过程: 下载teamviewer,直接到teamviewer的官网上直接下载 下载完后,安装teamviewerw sudo dpkg -i 下载的文件的路径+文件名 安装完后会提示存在依赖问题,修复 ...

  5. 大数据笔记(十四)——HBase的过滤器与Mapreduce

    一. HBase过滤器 1.列值过滤器 2.列名前缀过滤器 3.多个列名前缀过滤器 4.行键过滤器5.组合过滤器 package demo; import javax.swing.RowFilter; ...

  6. 北风设计模式课程---单一职责原则(Single Responsibility Principle)

    北风设计模式课程---单一职责原则(Single Responsibility Principle) 一.总结 一句话总结: 一个类应该有且只有一个变化的原因:单一职责原则(SRP:Single Re ...

  7. linux shell的一些配置

    alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias ...

  8. 简单三步同步你的 VSCode 用户配置

    https://www.cnblogs.com/knight-errant/p/10444777.html 设备重装,换设备,VSCode 又要重新配置了?不不不,简单三步,让你的 VSCode 配置 ...

  9. 二十五、python中pickle序列学习(仅python语言中有)

    1.pickle序列介绍:提供4个关键字:dumps,dump,loads,load 语法:f.write(pickle.dumps(dict))=pickle.dump(dict,f) " ...

  10. LNMP 搭建 wordpress 站点 安装及配置过程

    0x00 环境 阿里云ECS云服务器 CPU:1核 内存:4G 操作系统:Centos 系统盘:100G 0x01 安装及配置 主要使用 nginx . php 和 mysql 注意:如果下面的设置不 ...