2016-02-04 6 views
0

В настоящее время я использую Babel для написания бэкэнда Node.js в ES6. К сожалению, я обнаружил странное поведение при расширении определенного класса. Некоторые из моих методов, определенных в расширяющемся классе, не определены. Если я не использую синтаксис ES7, чтобы привязать их к свойству.Методы расширенного класса Babel/ES6 undefined

Это фактический код, который дает мне это странное поведение:

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 
    } 
} 

Это фактически расширяет Router из expressjs библиотеки. Поэтому прямо сейчас мне просто интересно, сможет ли кто-нибудь объяснить это поведение и/или если есть способ исправить это.

+0

Я использую _Express_ ** 4.13.3 ** и _Babel_ ** 6.4.6 ** с помощью плагинов _es2015_, _stage-0_, _stage- 1_, _stage-2_ и _stage-3_. – byCedric

ответ

1

Я пошел искать код ExpressJS, чтобы найти какое-то объяснение. По-видимому, им нравится возвращать совершенно новый и другой контекст из конструктора Router. Это объясняет, почему this полностью отличается от моих методов ...