0

データを保持および管理するクラスと、データに基づいて決定を行うクラスの 2 つのクラスがあります。

module.exports = class Data
    constructor: () ->
         @stuff = 
             foo: 42
             bar: 'something'

そして別のファイルで

module.exports = class Mutator
    constructor: (Data) ->
         @foo = Data.foo

そしてメインファイルで

Data = require './Data'
Mutator = require './Mutator'

module.exports = class Main
     constructor: () ->
         @data = new Data()
         @mutator = new Mutator(@data)

私が抱えている問題は@data、参照渡しされていないように見えることです

主に

console.log @Mutator.foo # 42
@data.foo = '24'
console.log @Mutator.foo # still 42

何が原因でしょうか?

4

1 に答える 1

3

@dataData.foo参照渡しされていますが、ここで値を引き出すと、その参照方法がスローされます。

@foo = Data.foo

YourDataは your と同じですが@data@fooの値ですData.fooDataではなく、保持する必要がありますData.foo

class Mutator
    constructor: (Data) ->
         @data = Data

を見てください@mutator.data.foo。おそらくdefinePropertygetter を定義するために使用できるため、パーツfooを非表示にして機能させることができます。これがどのように機能するかについてのメモについては、この回答をご覧ください。data@mutator.foo

于 2013-07-13T05:33:51.033 に答える