【问题标题】:ES2015: Call Inner method from overwrited classES2015:从覆盖的类调用内部方法
【发布时间】:2016-08-17 13:21:34
【问题描述】:

我正在学习 ES6 类和对象。为此,我正在制作一个示例应用程序,我发现了这个问题:

我有这个 MainClass:

class App {
    boot() {
        console.log('app booted')
    }
}

然后我有另一个类,它从第一个类扩展:

class someClass extends App {
    boot() {
        this.update()
    }
    update() {
        console.log('update Method!')
    }
}

来自someClass 我正在覆盖引导方法。这很好用,因为它正在尝试调用 update 方法。

但它以undefined 的形式返回update 方法。

我明白了,在这种情况下thisApp 类,所以updateApp 中是未定义的。

有没有办法从someClass 类中的boot 方法调用update 方法?

【问题讨论】:

  • “我明白了,在这种情况下这是 App 类,所以更新在 App 内部是未定义的。” 不,这是不正确的。 this 指的是什么取决于你如何称呼boot。也许您在某处将boot 作为回调传递。在这种情况下,请查看How to access the correct this / context inside a callback?。如果不是这样,请告诉我们你是怎么称呼它的。
  • 我第二个菲利克斯。请添加您的调用方式、您期望的返回值、您期望的日志记录以及您在这两个方面实际得到的结果。

标签: javascript class oop object ecmascript-6


【解决方案1】:

是的,有。实例化一个新对象,然后在该对象上调用boot()。比如像这样:

class App {
    boot() {
        console.log('app booted')
    }
}

class someClass extends App {
    boot() {
        this.update()
    }
    update() {
        console.log('update Method!')
    }
}

const test = new someClass();
test.boot(); // update Method!

您可以测试您的代码here

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 2011-12-13
    • 2021-11-28
    • 2017-11-11
    • 2011-11-03
    • 2021-10-04
    • 2016-01-11
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多