2012-03-05 125 views
0

我想使用本地會話存儲來維護我的web應用中的狀態,特別是當/當用戶在他的瀏覽器中打開多個選項卡時。使用本地會話保持狀態

我有一些數據被注入到服務器上的HTML中。在頁面的document.ready部分,我有這樣的事情:

MyStorage = window.sessionStorage; 
MyStorage.setItem('MyVar', $('#TheVar').html()); 

如果以後我寫這篇文章:

ThisVar = MyStorage.getItem('MyVar'); 
ThisVar = 3; 

將在會話存儲價值也成爲3?而且,當我在一個選項卡中更改ThisVar的值時,其他選項卡中的所有變量ThisVar的值是否也是3?

謝謝。

+0

不,因爲您正在更改局部變量ThisVar,您可以將該值寫回到你的sessionStorrage。 – 2012-03-05 13:51:00

回答

3
  1. 沒有,因爲你分配一個新值ThisVar,不以sessionStorage鍵值對。
  2. 不,變量不會神奇地更新。 getItem返回值,從而存儲密鑰的字符串。
+0

那麼有沒有一種方法來分配它的參考呢? – frenchie 2012-03-05 13:51:06

+0

@frenchie無論何時需要最新值,您都必須使用'sessionStorage.getItem('MyVar')'。 – 2012-03-05 13:53:32

+1

好的,謝謝,我明白了。它只適用於對象,因爲對象是引用類型,但sessionStorage只能與字符串一起使用,並且只能通過值傳遞;那是對的嗎? – frenchie 2012-03-05 13:56:23

0
  1. 儘量避免大寫的變量,這個命名,約定僅適用於類。
  2. 使用關鍵字var初始化您的變量。

  3. (對您的問題的回答)不可以。您不參考參考文獻,localStorage.getItem()函數將該值作爲字符串返回,而不是作爲參考。您需要像首先那樣使用localStorage.setItem()函數來更新存儲。那就是爲什麼,我建議你直接在存儲上工作而不使用額外的變量。 (另一方面,您可以使用一個函數,它在更改變量值時更新存儲空間。)