首页 > 解决方案 > `super()` 是否应该为函数返回 `this`?

问题描述

我发现普通浏览器和 Edge 之间的行为存在差异。当您从函数而不是类继承时,在 Edge 下super()返回。undefined

const f = function () {};
class g extends f {
    constructor() {
        if (super()) {
            document.body.innerHTML = 'Sane browser';
        }
    }
}
new g();

现场版。

哪种行为是正确的?

标签: javascriptcross-browsermicrosoft-edge

解决方案


构造函数不负责创建对象的指针。然而,'new' 运算符会创建一个空白对象,并负责在构造函数中分配此指针。

实际上,在使用 new 运算符调用构造函数之前,它们并不是真正的构造函数。它们只是功能


推荐阅读