2012-03-05 76 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()函数来更新存储。那就是为什么,我建议你直接在存储上工作而不使用额外的变量。 (另一方面,您可以使用一个函数,它在更改变量值时更新存储空间。)

相关问题