javascript - 从基类访问和执行子类中的函数

标签 javascript typescript

是否可以从基类访问子类成员并执行子函数?

例如:

class ChildClass extends BaseClass {

    protected childMember = 'someName';

    constructor() {
        super();
        super.runBaseFn();
    }

    runChildFn() {
        console.info('child fn');
    }
}

class BaseClass {

    runBaseFn() {
       if (child.childMember === 'someName') {
           child.runChildFn();
       }
    }
}

这可以完成runBaseFn中的代码吗?或者有类似的解决方案吗?

最佳答案

您需要在父类中声明:

class BaseClass {
    protected childMember: string;

    runBaseFn() {
       if (this.childMember === 'someName') {
           this.runChildFn();
       }
    }

    protected runChildFn() {}
}

class ChildClass extends BaseClass {
    constructor() {
        super();

        this.childMember = 'someName';
        super.runBaseFn();
    }

    runChildFn() {
        console.info('child fn');
    }
}

( code in playground )

您可以将父类设为抽象:

abstract class BaseClass {
    protected childMember: string;

    runBaseFn() {
       if (this.childMember === 'someName') {
           this.runChildFn();
       }
    }

    protected abstract runChildFn();
}

关于javascript - 从基类访问和执行子类中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318057/

相关文章:

javascript - jQuery 和 Canvas 图像裁剪 - 索引或大小为负数或大于允许的量

javascript - 在 GraphQL 中将参数从根查询传递到子查询

angular - Typescript 将 null 分配给类型不会触发错误

javascript - 使用 webpack 创建串联的 .d.ts

javascript - 在倒计时器javascript中显示小时

javascript - jQuery UI Draggable 和 Droppable,恢复和接受元素

angular - 延迟加载获取当前路由模块

javascript - 什么时候执行 TypeScript 顶级非导出代码?

javascript - 如何为数组中的每个元素绕过 SecurityTrustResourceUrl?

javascript - HTML 表格样式特定列