babel 编译 es6 类,函数未定义

app*_*hat 5 javascript oop methods constructor ecmascript-6

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

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

前:

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

    myMethod() {
        console.log("myMethod");
    } 
} // END myClass
Run Code Online (Sandbox Code Playgroud)

后:

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;
Run Code Online (Sandbox Code Playgroud)

感谢这方面的任何帮助

Shu*_*awa 8

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

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

    myMethod() {
        console.log("myMethod");
    }
} // END myClass
Run Code Online (Sandbox Code Playgroud)

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

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

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

    myMethod() {
        console.log("myMethod");
    }
} // END myClass
Run Code Online (Sandbox Code Playgroud)

JavaScript 的方法只是一个对象的属性,它是一个函数。您需要obj.prop访问一个属性。在类构造函数和方法中,this指向实例本身。