super的两个作用
super与实例没有什么关系,它本身有两个作用的,参考如下理解:
1.super可以当函数用。super作为函数调用时,表示父类的构造函数。示例:
class Par {
constructor() {
this.num = 21;
}
}
class Chil extends Par {
constructor() {
//继承父类的构造函数constructor
super()
}
}
var p = new Chil();
// 子类的实例上,可以调用num属性,则说明子类的构造函数中
// 通过 super() 继承了父类的构造函数。
console.log(p.num) //21
super() 表示的父类的构造器,那么super() 中的参数,自然表示父类构造器中的参数。
class Par {
// 为了区分父类与子类的参数,这里起名为username1
constructor(username1) { //username1接收username的值
this.username = username1; //所以this.username="小慕"
}
}
class Chil extends Par {
constructor(username) { //username接收的就是下面实例化的参数"小慕"
super(username)//super表示父类的构造器,所以这里是把username传递给父类构造器
}
}
var p = new Chil("小慕"); //实例化的时候,传入参数"小慕"
// 实例化对象,会继承类的属性和方法,Chil类继承了父类的属性username,所以Chil类的实例化对象
//也就可以调用到username,输出"小慕"
console.log(p.username) //小慕
2.可以作为对象使用。super 作为对象使用时, 在普通的方法中,指向的是父类的原型对象。在静态方法中,指向的是父类。
也就是作为对象去使用分了两种情况,扩展一下,作为了解:
class A {
constructor() {
}
// 普通方法,放在A原型上的。
say() {
console.log("普通方法")
}
// 加static定义的叫做静态方法,能被子类继承,但是不能被实例化对象继承。
static greeting() {
console.log("静态方法")
}
}
class B extends A {
constructor() {
super(); //在构造器中,作为函数调用,是继承父类构造器
}
bsay() {
// 在普通方法中,super指向的是父类原型对象,即prototype,
// 所以能访问父类原型上的方法。
super.say() // "普通方法";
}
static bgreeting() {
// 在静态方法中,super指向的是父类,能访问父类的静态属性和静态方法。
super.greeting(); //"静态方法"
}
}
let xiao = new B();
xiao.bsay();
B.bgreeting();
super的两个作用的更多相关文章
- 对TControl和TWinControl相同与不同之处的深刻理解(每一个WinControl就相当于扮演了整个Windows的窗口管理角色,主要是窗口显示和窗口大小)——TWinControl就两个作用(管理子控件的功能和调用句柄API的功能)
TControl是图形控件,它本身没有句柄,所以不能直接使用WINAPI显示,调整位置,发消息等等,只能想办法间接取得想要的效果,但是可以直接使用一些不需要句柄的API,比如InvalidateRec ...
- java中super的两种用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
- return在Java中的两个作用
Java中return的两个作用: (1)返回方法指定类型的值(这个值总是确定的),也可以是对象 (2)方法的结束
- C#中return的两个作用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- super(classname,self).__init__() 作用
- Volatile关键字的两个作用
1.保证修饰的变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个值,新值对于其他线程来说是可以立即得知的. 2.禁止指令重新排序化
- 构造方法,this,super,final,static
1构造方法 一个Person类,属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.但如果需要在创建对象的同时明确对象的属性值,就需要构造方法了. 1.1定义 构建创 ...
- this&super两个关键字的意义和用法
"this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特殊语法,不是变量,没有什么类型. ...
- 7 html-webpack-plugin的两个基本作用
html-webpack-plugin的作用: 1.在内存中根据我们的index模板页面,生成一个内存里面的首页 2.当使用html-webpack-plugin之后,我们不再需要手动处理bundle ...
随机推荐
- jumpserver 用户,系统用户和管理用户 普通用户和特权用户 区别
前言 现在很多公司都有在用Jumpserver跳板机 有很多人一直对jumpserver的各种用户还不是很了解 当你了解了这几个概念了之后,就能更好的灵活的运用到分配权限当中去. 下面我们一个一个的说 ...
- 网络损伤仪WANsim的功能与型号
网络损伤仪简介 WANsim网络损伤仪是一款可以模拟真实的广域网状况的设备.它可以通过简单的数据填写模拟出时延.带宽抖动.丢包.乱序.误码.报文重复等网络状况. 大多数公司在进行产品测试时,只关注了应 ...
- 全站 HTTPS 就一定安全了吗?
随着网络技术手段不断地更新迭代,互联网安全对于企业和个人的重要性都越来越高.因此越来越多的服务商都开始偏向为用户提供更安全的在线内容访问. 中间人攻击 为了保障网站内容安全,诞生了不少加密方式.目前应 ...
- SpringBoot添加Cors跨域配置,解决No 'Access-Control-Allow-Origin' header is present on the requested resource
目录 什么是CORS SpringBoot 全局配置CORS 拦截器处理预检请求 什么是CORS 跨域(CORS)请求:同源策略/SOP(Same origin policy)是一种约定,由Netsc ...
- 开源基于docker的任务调度器pipeline,比`quartzs` 更强大的分布式任务调度器
pipeline 分布式任务调度器 目标: 基于docker的布式任务调度器, 比quartzs,xxl-job 更强大的分布式任务调度器. 可以将要执行的任务打包为docker镜像,或者选择已有镜像 ...
- 【源码】“@Value 注入不成功”引发的一系列骚操作
目录 背景 模拟@Value成功的场景 模拟注入不成功的场景 看看为什么没有注入成功 为什么加static和不加static的加载顺序是不一样的呢 我们不加static,能不能也让它注入成功呢? 总结 ...
- switch-case例题
根据订单的状态码打印对应的汉字状态(使用switch-case)1-等待付款 2-等待发货 3-运输中 4-已签收 5-已取消 其它-无法追踪 var n='2' switch(n){ case 1: ...
- 什么是 RFC 2544
什么是 RFC 2544? 如果您从事网络工作,您可能听说过它,但 RFC 2544 究竟是什么呢? RFC 的全称是 Request for comment ,请求注解.是一系列收录了互联网国际标准 ...
- 5年Android开发诉苦:47天21家面试,半年空档期觉得整个人生都被毁了
近日,我在逛某社交论坛时,发现一位做了五年的Android开发将自己这段时间的所有面试经历发表了出来,根据网友自己提供的信息显示,主要面试的地点都在北京,上海等地. 微软和亚马逊刚面试完一面,都是以算 ...
- Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!
一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...