Javascript ES6类和节点内的函数用法
我一直在学习一些React,我一直在使用ES6类编写基于类的组件。我正在做一个小的节点项目,但这些语法都不起作用Javascript ES6类和节点内的函数用法,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我一直在学习一些React,我一直在使用ES6类编写基于类的组件。我正在做一个小的节点项目,但这些语法都不起作用 class Handler { handleReq = () => { this.ctx = ctx; }; testFunc = async () => { }; } export default (HandleReq = Handler.prototype.handleReq); 这个语法有什么问题?它不在节点中运行吗?我必须安装esm
class Handler {
handleReq = () => {
this.ctx = ctx;
};
testFunc = async () => {
};
}
export default (HandleReq = Handler.prototype.handleReq);
这个语法有什么问题?它不在节点中运行吗?我必须安装esm
,以使导入/导出语法正常工作,但这仍然无法编译 仍处于提案阶段(第3阶段已经开始,所以它们很快就会成为语言的一部分)。这意味着一些运行时可能已经支持它们了,但是它们还不必支持。要可靠地使用今天的提案,您必须将其向下传输
将代码传输到以下ES6:
class Handler {
constructor() {
this.handleReq = () => {
this.ctx = ctx;
};
this.testFunc = async () => {
};
}
}
因此,这些方法实际上只存在于构造后的实例上,而不存在于
处理程序上。prototype
正如其他人所指出的,类字段还不是ES6语法的一部分,不需要转换。如果要避免生成步骤,等效的节点语法为:
// import someImport from './some-import' is invalid, instead use:
const someImport = require('./some-import');
class Handler {
constructor() {
this.handleReq = this.handleReq.bind(this);
this.testFunc = this.testFunc.bind(this);
}
handleReq() {
this.ctx = ctx; // Where is ctx coming from?
}
async testFunc() {
}
}
// export default Handler.prototype.handleReq is invalid, instead use:
module.exports = Handler.prototype.handleReq;
类属性尚未生效,它们处于建议阶段。你今天必须使用一个transpiler lile BabelJS来和他们一起工作。明白了,现在人们通常做什么来获得这种东西?他们是否编写旧样式的代码?以及
Handler.prototype.handleReq
将永远无法工作,因为handleReq
必须绑定到实例,因此它将只存在于实例上((新处理程序).handleReq
)@johnlipson是,它们只是使用普通的类方法,或者将箭头函数放在它们所属的构造函数中。您似乎没有发布完整的代码,但我怀疑您是否需要这里的箭头函数代码>应该完成什么?除了在赋值未声明的全局变量时抛出异常之外,如果您只导出一个方法,为什么还要使用类?