babel编译es6类,函数未定义

时间:2016-02-12 23:42:34

标签: javascript oop methods constructor ecmascript-6

Babel正在编译我的es6类,因此构造函数本身就是一个函数,类中的方法成为类声明。

这导致构造函数中的任何函数调用都未定义。

在:

class myClass {
    constructor() {
        myMethod();
    } // END constructor

    myMethod() {
        console.log("myMethod");
    } 
} // END myClass

后:

var myClass = function () {
    function myClass() {
        _classCallCheck(this, myClass);
        myMethod(); // undefined function
    } // END constructor

    _createClass(myClass, [{
        key: 'myMethod',
        value: function myMethod() { 
            console.log("myMethod");
        } // END myMethod()
    }]);

    return myClass;
}(); // END myClass

exports.default = myClass;

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:2)

ES6类构造函数和方法中需要this.myMethod()

class myClass {
    constructor() {
        this.myMethod();
    } // END constructor

    myMethod() {
        console.log("myMethod");
    }
} // END myClass

myMethod()在类外调用名为myMethod的函数。

function myMethod() {
    console.log("external function!");
}

class myClass {
    constructor() {
        myMethod();
    } // END constructor

    myMethod() {
        console.log("myMethod");
    }
} // END myClass

JavaScript的方法只是一个Object的属性,它是一个函数。您需要obj.prop才能访问该媒体资源。在类构造函数和方法中,this指向实例本身。