babel编译es6类,未定义函数
问题描述:
Babel正在编译我的es6类,所以构造函数本身就是一个函数,并且类中的方法成为类声明。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;
感谢您在这
答
任何帮助,您需要在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
指向实例本身。
感谢您的帮助,我最初在构造函数中试过,添加了这个。到方法声明没有在es6文档和babel中通过语法错误“意外标记”提及。还尝试了myMethod:function(){},结果相同。可以提供代码示例,所以我可以看到你到底在说什么? – appthat
当然!添加代码示例编辑答案。 –
谢谢,这实际上是我的问题的一部分,我忽略的另一个问题是,我试图访问回调匿名函数内的myMethod。删除匿名函数包装并使用this.myMethod.bind(this)一劳永逸地解决问题 – appthat