gpt4 book ai didi

javascript - 对象未通过引用传递(CoffeeScript)

转载 作者:行者123 更新时间:2023-11-28 20:24:36 25 4
gpt4 key购买 nike

我有两个类,一个类保存和管理数据,一个类根据数据做出决策

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

这可能是什么原因造成的?

最佳答案

@data 是通过引用传递的,但当您在此处提取 Data.foo 值时,您会抛出该引用方式:

@foo = Data.foo

您的Data与您的@data相同,但@foo只是Data.foo的值>。您需要保留 Data 而不是 Data.foo:

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

然后查看@mutator.data.foo。您可能可以使用 definePropertyfoo 定义一个 getter,从而隐藏 data 部分并使 @mutator.foo 工作。看看this answer有关其工作原理的一些说明。

关于javascript - 对象未通过引用传递(CoffeeScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com