Express Babel/ES6扩展类方法未定义

Express Babel/ES6扩展类方法未定义,express,ecmascript-6,babeljs,ecmascript-2016,Express,Ecmascript 6,Babeljs,Ecmascript 2016,目前我正在使用Babel在ES6中编写Node.js后端。不幸的是,我在扩展特定类时遇到了一种奇怪的行为。我在扩展类中定义的一些方法是未定义的。除非我使用ES7语法将它们绑定到属性 这是给我这种奇怪行为的实际代码: import { Router } from 'express'; class MyCustomRouter extends Router { constructor() { super(); this.methodWorks(); //

目前我正在使用Babel在ES6中编写Node.js后端。不幸的是,我在扩展特定类时遇到了一种奇怪的行为。我在扩展类中定义的一些方法是未定义的。除非我使用ES7语法将它们绑定到属性

这是给我这种奇怪行为的实际代码:

import { Router } from 'express';

class MyCustomRouter extends Router
{
    constructor() {
        super();

        this.methodWorks();  // works like a charm.
        this.methodDoesnt(); // throws TypeError: _this.methodDoesnt is not a function
    }

    methodWorks = () => {
        // some content
    }

    methodDoesnt() {
        // some content
    }
}

这实际上是从
expressjs
库扩展
路由器。所以现在我只是好奇是否有人能解释这种行为和/或是否有办法解决这个问题。

我去查看ExpressJS本身的代码以找到一些解释。显然,他们喜欢从
路由器的构造函数返回一个全新的、不同的上下文。这就解释了为什么这个
完全不同,不包含我的方法…

我去查看ExpressJS本身的代码,以找到一些解释。显然,他们喜欢从
路由器的构造函数返回一个全新的、不同的上下文。这就解释了为什么
这个
完全不同,不包含我的方法…

我使用的是Express 4.13.3和Babel 6.4.6,使用的插件有es2015、stage-0、stage-1、stage-2和stage-3。我使用的是Express 4.13.3和Babel 6.4.6,使用的插件有es2015、stage-0、stage-1、stage-2和stage-3。