浅谈ES6中super关键字
作用:
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'
2 对象的字面量(__proto__项目)
 var obj1 = {
   method1() {
     console.log("method 1");
   }
 }
 var obj2 = {
   method2() {
    super.method1();
   }
 }
 // 必须利用setPrototypeOf将第二个对象的原型设为第一个对象
 Object.setPrototypeOf(obj2, obj1);
 obj2.method2(); // logs "method 1"
浅谈ES6中super关键字的更多相关文章
- 浅谈Java中static关键字、权限修饰符
		
1.实例变量:也称非静态成员变量,实例变量前没有static关键字,用来描述同一类事物的公共属性.访问方式:对象名.变量名.实例变量存储在堆区,对象有n个,数据就有n个.实例变量随着对象的创建而创建, ...
 - 浅谈ES6中的Class
		
转载地址:https://www.cnblogs.com/sghy/p/8005857.html 一.定义类(ES6的类,完全可以看做是构造函数的另一种写法) class Greet { constr ...
 - 浅谈Java中的关键字
		
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...
 - 浅谈ES6中的Async函数
		
转载地址:https://www.cnblogs.com/sghy/p/7987640.html 定义:Async函数是一个异步操作函数,本质上,Async函数是Generator函数的语法糖.asy ...
 - 浅谈ES6中的Proxy
		
Proxy是一个很有趣的对象,它能够修改某些操作的默认行为,等同于在语言层面做出修改,属于一种‘元编程’,即对编程语言进行编程. Proxy其实很好理解,就是在目标对象之前架设一层拦截,外界的访问都得 ...
 - 浅谈Java中的final关键字
		
浅谈Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
 - 浅谈Java中的深拷贝和浅拷贝(转载)
		
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...
 - 浅谈Java中的深拷贝和浅拷贝
		
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...
 - 浅谈HTTP中GET、POST用法以及它们的区别
		
浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...
 
随机推荐
- linux  df 日志删除命令分析
			
在部署文件的时候 发现 文件太多了,需要删除: 使用命令行df -h; [sankuai@set-gh-qcs-regulation-wanganbu-test01 com.sankuai.qcs.r ...
 - _blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip
			
python2.6 get-pip.py 报错下面的错误_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip解决方案:# 1, 从官方git ...
 - ZooKeeper和ZAB协议
			
前言 ZooKeeper是一个提供高可用,一致性,高性能的保证读写顺序的存储系统.ZAB协议为ZooKeeper专门设计的一种支持数据一致性的原子广播协议. 演示环境 $ uname -a Darwi ...
 - Nginx配置简单基于域名的虚拟主机
			
首先修改hosts文件,让浏览器在看到a.com或是www.a.com的网址时知道上哪里去找: # Copyright (c) 1993-2009 Microsoft Corp. # # This i ...
 - golang rabbitmq 的学习
			
https://www.rabbitmq.com/tutorials/tutorial-one-go.html Rabbitmq的任务分发机制 producer_task.go package mai ...
 - js页面 :函数名 is not defined
			
最初的写法如下 function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + AddDayCoun ...
 - http使用formData方式传输文件请求
			
转载请注明出处: 项目中有遇到http使用formData请求传输文件,在此记录一下 1.依赖jar包: <dependency> <groupId>org.apache.ht ...
 - Linux_CentOS中的MySQL 数据库的安装调试、远程管理
			
官网查看最新 MySQL 安装包 https://dev.mysql.com/downloads/repo/yum/ 下载 MySQL 源的安装包 wget http://dev.mysql.com/ ...
 - how-does-mysql-replication-really-work/ what-causes-replication-lag
			
https://www.cnblogs.com/kevingrace/p/6274073.html https://www.cnblogs.com/kevingrace/p/6261091.html ...
 - Spring cloud微服务安全实战-7-13章节总结
			
日志信息可以放到kafka,像指标监控就可以从kafka里面拿出日志来,分析日志里面的东西,把日志里面的一些信息变成数字,比如某个关键字出现了多少次,这样的信息同样去做监控,做报警. 调用链监控也是和 ...