ES6中用extends继承时,如何在子类的方法中使用父类的构造方法?

如下,错误示例:

'use strict'

class MyDate extends Date{

    constructor(){
        super();
    }

    fromDate(date){
        var mTimes = super(date);//这里想调用new Date(date)的构造方法
    }
}
阅读 8.4k
4 个回答

没这样的语法,这么写会报错,如果你想用的话这么写吧

class MyDate extends Date { //你的代码多了括号

    constructor(){
        super();
    }

    fromDate(date){
        var mTimes = new Date(date);
    }
}

Class用法

既然你的父类构造方法有参数 constructor里的super为什么没参数?

一般不会在子类的方法中去访问构造方法的吧

不是不会,是不能。你可以借鉴下后端的语法规范。即构造方法,只能在构造方法中调用,且必须位于第一行。构造方法的目的是初始化,在调用成员方法之前,类应该是已经初始化过了的,所以不允许在调用成员方法的时候再去调用构造函数。

可以这样:

class Cat { 
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Lion extends Cat {
  speak() {
    super.speak();
    console.log(this.name + ' roars.');
  }
}

具体参考这里吧:https://developer.mozilla.org...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题