在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
也会更新吗?如果是的话,它是如何运作的?
答案 0 :(得分: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()
本身没有更改。