2016-01-25 60 views
0

在Javascript中,strings are immutable,並使引用字符串就相當於複製串istelf。Falcor模型如何處理對字符串的引用?

在Falcor,我使用{$type:"ref", value:[...]}可以引用字符串。 Falcor聲稱保持數據一致性,因此如果模型包含引用,它們最終會指向同一個JS對象(因此保持一致性變得微不足道)。

Falcor docs on JSON Graph
JSON格拉夫允許的曲線圖被建模爲JSON而不引入重複。除了插入一個實體到相同的消息多次的,具有獨特的標識符的每個實體被插入在JSON Graph對象一個單個,全局唯一的位置。

不過,我看不出這是怎麼應用到字符串。

讓說,我有這樣一個模型:

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

時會發生什麼我更新foo.textbar.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()本身沒有改變。