0

我了解如何在标准 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 

我究竟做错了什么?

4

2 回答 2

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
于 2012-04-08T12:07:54.133 回答
0

只是为了更简洁一点:

构造函数:(@param)->

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

于 2012-04-08T15:09:43.440 回答