0

在 Javascript 中,字符串是不可变的,对字符串的引用相当于复制字符串 istelf。

在 Falcor 中,我可以使用{$type:"ref", value:[...]}. Falcor 声称要保持数据一致性,因此如果模型包含引用,它们最终会指向同一个 JS 对象(因此保持一致性变得微不足道)。

来自JSON Graph 上的 Falcor 文档
JSON Graph 允许将图建模为 JSON,而不会引入重复项。不是将实体多次插入同一消息,而是将具有唯一标识符的每个实体插入到 JSON Graph 对象中的单个全局唯一位置。

但是,我看不出这如何适用于字符串。

假设,我有一个这样的模型:

{jsonGraph:{
    foo: {text: 'aaa'},
    bar: {text: {$type: "ref", value: ["foo", "text"]}},
}}

当我更新时会发生什么foo.text?也会bar.text更新吗?如果是,它是如何工作的?

4

1 回答 1

1

当我更新时会发生什么foo.text?也会bar.text更新吗?

如果您更新foo.text,那么get('bar.text')您将获得的当前值foo.text是什么。如果你想这样想的话,就好像两个地方的值都更新了

但实际上没有bar.text价值,它只是一个引用,如果被引用的东西发生了变化,那么跟随这个引用的东西就会遇到那个新的价值。

可以这样想:

var text = '123';
function getText() {
  return text;
}

getText()表现得像对text. 如果你设置text = 456thengetText()将开始返回一个不同的值,即使getText()它本身没有改变。

于 2016-02-01T19:05:58.483 回答