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)
感谢这方面的任何帮助
你需要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指向实例本身。