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的两个作用的更多相关文章

  1. 对TControl和TWinControl相同与不同之处的深刻理解(每一个WinControl就相当于扮演了整个Windows的窗口管理角色,主要是窗口显示和窗口大小)——TWinControl就两个作用(管理子控件的功能和调用句柄API的功能)

    TControl是图形控件,它本身没有句柄,所以不能直接使用WINAPI显示,调整位置,发消息等等,只能想办法间接取得想要的效果,但是可以直接使用一些不需要句柄的API,比如InvalidateRec ...

  2. java中super的两种用法

    通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...

  3. return在Java中的两个作用

    Java中return的两个作用:   (1)返回方法指定类型的值(这个值总是确定的),也可以是对象   (2)方法的结束

  4. C#中return的两个作用

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  5. super(classname,self).__init__() 作用

  6. Volatile关键字的两个作用

    1.保证修饰的变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个值,新值对于其他线程来说是可以立即得知的. 2.禁止指令重新排序化

  7. 构造方法,this,super,final,static

    1构造方法 一个Person类,属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.但如果需要在创建对象的同时明确对象的属性值,就需要构造方法了. 1.1定义 构建创 ...

  8. this&super两个关键字的意义和用法

    "this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特殊语法,不是变量,没有什么类型. ...

  9. 7 html-webpack-plugin的两个基本作用

    html-webpack-plugin的作用: 1.在内存中根据我们的index模板页面,生成一个内存里面的首页 2.当使用html-webpack-plugin之后,我们不再需要手动处理bundle ...

随机推荐

  1. 架构之:REST和HATEOAS

    目录 简介 HATEOAS简介 HATEOAS的格式 HATEOAS的Spring支持 总结 简介 我们知道REST是一种架构方式,它只是指定了六种需要遵循的基本原则,但是它指定的原则都比较宽泛,我们 ...

  2. 素数(质数)(Java版)

    4.输出质数(素数) 素数(质数):是指在大于1的自然数中,除了1和它本身外,不能被其他自然数整除(除0以外)的数 public class PrimeNumber { public static v ...

  3. NetCoreMvc系列文章02---依赖注入

    .netCore自带依赖注入,支持构造函数注入,如不了解IOC 和DI 思想的请看我其它文章中关于这主面的介绍.如Startup.cs类中的Configure方法其中IApplicationBuild ...

  4. jvm源码解读--11 ldc指令的解读

    写一个java文件 public static void main(String[] args) { String str1="abc"; String str2 ="a ...

  5. 一键设置WPS_Office_2019专业版的定时自动备份的批处理文件

    一键设置WPS_Office_2019专业版的定时自动备份的批处理文件 rem ================================================ rem 一键设置WPS ...

  6. 遥远的国度 (树链剖分换根),洛谷P3979

    析:显然,若没有换根操作,则为树链剖分板子题,但是这道题我们考虑换根操作 考虑这样一个性质:在一棵树上,两点的距离路径是唯一的!! 也就是说,我们在修改路径上的点权时,不必考虑根在哪里,直接利用模板修 ...

  7. shell的编程规范和变量

    目录 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell 三.shell脚本的构 ...

  8. I类HDACs是乳酸化修饰“eraser”

    赖氨酸酰化修饰 (lysine acylation) 是一种广泛存在的.进化上高度保守的蛋白质翻译后修饰 (post-translational modifications, PTMs) 类型,通过表 ...

  9. C++ //构造函数的分类及调用 //分类 // 按照参数分类 无参构造函数(默认构造) 有参构造函数 //按照类型分类 普通构造 拷贝构造

    1 //构造函数的分类及调用 2 //分类 3 // 按照参数分类 无参构造函数(默认构造) 有参构造函数 4 //按照类型分类 普通构造 拷贝构造 5 6 #include <iostream ...

  10. 如何将代码优雅的插入到word中

    介:写博客或者word时需要插入代码,但如何更优雅的将代码插入到word中呢? 反面教材如下: 技巧步骤1:插入表格,设置表格无边框: 技巧步骤2:使用Notepad++的高级功能: 大部分代码编辑器 ...