ES6在运行时覆盖类方法

时间:2017-10-26 10:25:53

标签: javascript ecmascript-6

我有一个基类,另一个类继承该基类 但是,在实例化子类之前,我需要根据另一个类的方法更改其中一个方法。

问题是超级调用失败,错误:

TypeError: (intermediate value).invoke is not a function

以下是我的问题的简化版本。

class Base{
        invoke(){
            console.log('base')
        }
    }

    class Child extends Base{
        invoke(){
            super.invoke();
            console.log('child')
        }
    }

    class Test{

        invoke(){
            super.invoke();
            console.log('test')
        }
    }

    Child.prototype.invoke = Test.prototype.invoke;
    const t = new Child;
    t.invoke();

注意:我不希望Child继承Test。

我想覆盖Child的调用,使用Test中的那个。

我相信它会很直接,但这种超级电话会引发问题。

有什么想法吗?

由于

0 个答案:

没有答案