(functionName)不是子类

时间:2019-06-26 12:34:37

标签: typescript class hierarchy

我正在为基于Web的文本编辑器编写扩展程序。由于类的层次结构,我的代码给出了一些奇怪的结果。

我尝试将“ validate”功能移至基类,但无济于事

class BaseClass{
    close(): void {
        // Does some stuff
    }
    save(): void {
        // Also does things
    }
}
class SubClass extends BaseClass{
    close(): void {
        this.validate(() => super.close()) // This works as expected
    }
    save(): void {
        this.validate(() => super.save()) // This throws the error: Uncaught TypeError: this.validate is not a function
    }
    validate(callback: () => void){
        // Does some validation, then
        if (validationOk) callback()
    }
}

预期结果是SubClass中的save和close函数都调用了validate函数而没有错误。

1 个答案:

答案 0 :(得分:0)

结果证明事件初始化错误。

我替换了以下内容:

this.saveButton.addEventListener('click',this.save);

使用:

this.saveButton.addEventListener('click',()=> this.save());

它在添加validate函数之前起作用的唯一原因是因为在BaseClass.save函数中没有对“ this”的引用。