码迷,mamicode.com
首页 > 其他好文 > 详细

ES6 Super关键字

时间:2021-02-27 13:27:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:--   call   static   log   xtend   struct   es6   原型   return   

  //super关键字
        //1、作为函数调用,调用父类的构造函数.
        //ES6中要求,在字类构造函数中,必须执行一个super函数
        //super指向父类的原型不是父类class
        class A {
            constructor(x) {
                this.x = x
            }
        }

        class B extends A {
            constructor(x, y) {
                //调用父类构造函数
                //A.prototype.constructor.call(this)
                //super代表的父类构造函数,但是在执行父类构造函数中的this代表的是子类的实例
                super(x)
                this.y = y
            }
        }

        var b = new B
        console.log(b)

        //2、super作为对象引用,指向父类的原型对象
        class C {
            //定义在父类实例自身属性
            x = 2
            //定义在父类原型对象上
            p() {
                return 1
            }
        }
        C.prototype.y = 3

        class D extends C {
            constructor() {
                super();

                console.log(super.p())
                console.log(super.x, super.y)
            }
        }
        var d = new D()
        console.log("d", d)

        console.log("-------------------------")
        //父类的静态方法,可以被子类继承
        class Foo {
            static methodA() {
                return "hello"
            }
        }

        class Bar extends Foo {

            static methodB() {
                //静态方法中的super,指向父类 Foo.methodA
                return super.methodA() + " methodB"
            }
        }
        console.log(Bar.methodA())
        console.log(Bar.methodB())

ES6 Super关键字

标签:--   call   static   log   xtend   struct   es6   原型   return   

原文地址:https://www.cnblogs.com/lceihen/p/14454747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!