0

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 

私は何を間違っていますか?

4

2 に答える 2

2

構文に誤りがあります:

standardFunction = (parameter) ->
    return parameter

する必要があります

standardFunction : (parameter) ->
    return parameter

:代わりに=)最初のものはに変換されます

standardFunction = function(parameter) {
    return parameter;
}

これは何も与えません(クラスとは関係ありません)が、2番目のものは

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 に答える