我了解如何在标准 Javascript 中使用 Protoype 与 Node.js 和模块,但在 CoffeeScript 中将它们等同起来却很困难。
假设我有一个名为 mymodule.coffee
的文件:
Module = {}
class MyModule
constructor: (parameter) ->
Module = this
Module.parameter = parameter
standardFunction = (parameter) ->
return parameter
callbackFunction = (parameter, callback) ->
callback parameter
exports.MyModule = MyModule
我还有另一个名为 test.coffee
的文件在同一目录中,我通过 coffee test.coffee
运行该目录,但出现错误 TypeError: Object #<MyModule> has no method 'standardFunction'
当尝试访问类 MyModule
时:
myModule = require 'mymodule'
myModule = new myModule.MyModule 'parameter'
console.log myModule.standardFunction 'parameter'
myModule.callbackFunction 'parameter', (response) ->
console.log 'Response: ' + response
我做错了什么?
最佳答案
您的语法有错误:
standardFunction = (parameter) ->
return parameter
应该是
standardFunction : (parameter) ->
return parameter
(:
而不是 =
) 第一个被转换为
standardFunction = function(parameter) {
return parameter;
}
它没有给你任何东西(与类无关),而第二个给你
MyModule.prototype.standardFunction = function(parameter) {
return parameter;
}
这就是你想要的。
顺便说一句,您可以在构造函数中使用 CoffeeScript,如下所示:
constructor: (parameter) ->
@parameter = parameter
关于javascript - Node.js + CoffeeScript - 模块/类混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062135/