Node.js + CoffeeScript - 模块/类混淆

时间:2012-04-08 10:34:02

标签: javascript node.js coffeescript

我理解如何在带有Node.js和模块的标准Javascript中使用Protoype,但是我在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 

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你的语法有误:

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

答案 1 :(得分:0)

更简洁一点:

构造:(@ PARAM) - &GT;

上面的代码将转换为this.param = param