Falcor 模型如何处理对字符串的引用?
Posted
技术标签:
【中文标题】Falcor 模型如何处理对字符串的引用?【英文标题】:How does Falcor Model handle references to strings? 【发布时间】:2016-05-01 11:53:05 【问题描述】:在 javascript 中,strings are immutable,对字符串的引用相当于复制字符串 istelf。
在 Falcor 中,我可以使用 $type:"ref", value:[...]
来引用字符串。 Falcor 声称要保持数据一致性,因此如果模型包含引用,它们最终会指向同一个 JS 对象(因此保持一致性变得微不足道)。
来自Falcor docs on JSON Graph: JSON Graph 允许将图建模为 JSON,而不会引入重复项。不是将一个实体多次插入同一消息,而是将每个具有唯一标识符的实体插入到 JSON Graph 对象中的一个单个全局唯一位置。
但是,我看不出这如何适用于字符串。
比方说,我有一个这样的模型:
jsonGraph:
foo: text: 'aaa',
bar: text: $type: "ref", value: ["foo", "text"],
当我更新foo.text
时会发生什么? bar.text
也会更新吗?如果是,它是如何工作的?
【问题讨论】:
【参考方案1】:当我更新
foo.text
时会发生什么?bar.text
也会更新吗?
如果您更新foo.text
,然后更新get('bar.text')
,您将获得foo.text
的当前值。如果您想这样想的话,好像两个地方的值都更新了。
但实际上没有bar.text
值,它只是一个引用,如果被引用的事物发生了变化,那么遵循该引用的事物将遇到该新值。
这样想:
var text = '123';
function getText()
return text;
getText()
的行为类似于对 text
的引用。如果您设置了text = 456
,那么getText()
将开始返回不同的值,即使getText()
本身没有改变。
【讨论】:
以上是关于Falcor 模型如何处理对字符串的引用?的主要内容,如果未能解决你的问题,请参考以下文章