美文网首页前端基础类学习
浅谈ES6中class语法糖中super关键字

浅谈ES6中class语法糖中super关键字

作者: 饥人谷_米弥轮 | 来源:发表于2017-12-09 03:09 被阅读54次
作用:
  • super 关键字用于访问父对象上的函数。
语法:
  • super([arguments]); // 访问父对象上的构造函数
  • super.functionOnParent([arguments]); // 访问父对象上的方法
详解:
  • super可以用在类的继承中,或者对象字面量中,super指代了整个prototype或者proto指向的对象
  1. 类(prototype相关)

a. 用在子类constructor函数中

class Person {
    constructor(name) {
        this.name = name;
    }
}
class Student extends Person {
    constructor(name, age) {
        super(); // 用在构造函数中,必须在使用this之前调用
        this.age = age;
    }
}

super()调用会生成一个空对象,作为context来调用父类的constructor,返回this对象,作为子类constructor的context继续调用构造函数。
context:执行上下文 constructor:构造函数

b. 调用父类的静态函数

class Human {
    constructor() {}
    static ping() {
        return 'ping';
    }
}

class Computer extends Human {
    constructor() {}
    static pingpong() {
        return super.ping() + ' pong';
    } // 只有在子类的静态函数中才能调用父类的静态函数(babel环境测试,按理说,在实例函数中应该也可以调用,不过实际测试环境中报错)
}
Computer.pingpong(); // 'ping pong'
  1. 对象的字面量(proto项目)
var obj1 = {
    method1() {
        console.log("method 1");
    }
}

var obj2 = {
    method2() {
        super.method1();
    }
}
// 必须利用setPrototypeOf将第二个对象的原型设为第一个对象
Object.setPrototypeOf(obj2, obj1);
obj2.method2(); // logs "method 1"

转载至:https://www.cnblogs.com/liutie1030/p/5997446.html

相关文章

  • 浅谈ES6中class语法糖中super关键字

    作用: super 关键字用于访问父对象上的函数。 语法: super([arguments]); // 访问父对...

  • [JavaScript] class

    ES6中的class基于原型继承创建类。 (1)class只是原型继承的语法糖 相当于: 注: class定义中...

  • Day2. JSX核心语法一, 跟着Demo入门JSX

    一. Javascript类的定义 JS语法补充 ES5中定义类 class ES6开始才有的关键字 ES6中通过...

  • ES6 中 class 与构造函数的关系

    ES6 中 class 与构造函数的关系class 为 构造函数的语法糖,即 class 的本质是 构造函数。c...

  • es6 class理解

    es6 class 是es5 function的语法糖 class中的所有方法 对应了 function的原型链上...

  • ES6

    ES6是一个语言标准,不是一个框架。 ES6中的class与继承 class是创建类对象与实现类继承的语法糖,旨在...

  • 浅谈ES6 类的原型

    ES6新增了类的概念 , 即关键字 class , 并且也实现了继承 extends 等这样的语法糖, 那么相比于...

  • react从0到1的探索记录02

    9、在react中如何创建组件 ES6中class关键字的作用 class关键字中构造器constructor的了...

  • 详解ES6中的class

    文章首发于 个人博客 目录 class 静态方法 静态属性 继承 super class class是一个语法糖,...

  • js继承 es6和es5

    es6 class是个语法糖,本质上是原型链 es6之前

网友评论

    本文标题:浅谈ES6中class语法糖中super关键字

    本文链接:https://www.haomeiwen.com/subject/amfuixtx.html