H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】ES6, 规定子类继承父类, 写constructor 时, 必须要调用super, 这样有没有可能带来副作用 ?

实际现象

  • 强制: 必须调用super ,获得this

预期现象

  • 带来的副作用 ? ( 其他OO语言没有这样的规定吧 ? )

  • 有哪些不便 ?

上下文环境

  • 产品版本:

  • 操作系统:

  • ES: ES >= 6

尝试解决 & 我的理解

  • 相关原理, 已经搜索过, 已经理解这个原理, 故不纠结原理

回答:

其他语言(如JAVA)也是要在子类初始化时首先调用父类构造方法的, 只是如果父类有无参构造函数时可以省略罢了.
面向对象的思想本身就要求在子类初始化时先初始化父类.

回答:

class Father {
    constructor(name) {
        this.name = name;
    }
    sayName() {
        console.log(this.name);
    }
}
class Son extends Father {
    constructor(name) {
        super(name);
    }
}
var bigSon = new Son('大头儿子');
bigSon.sayName();

// 如上super是调用父类的构造函数
// 如果不调用父类的构造函数,在调用父类的一些方法时可能出现错误。
// 再来是题主说的副作用,字段不能重复应该算一个吧,在不了解父类字段的情况下,子类定义的字段与父类冲突。
// 但是这个问题属于认为可控的。以上是我一个入门程序员所理解的,比较浅显。

本文地址:H5W3 » 【Web前端问题】ES6, 规定子类继承父类, 写constructor 时, 必须要调用super, 这样有没有可能带来副作用 ?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址