在Object中获取或设置localStorage值

时间:2014-02-16 14:00:26

标签: javascript jquery html5 local-storage javascript-objects

我在这里玩本地存储。并希望它获取或设置对象内的本地存储的值。我知道set或get项目是推荐的操作,但在某处我发现:

也可以使用localStorage.myvalue = "something";

设置LocalStorage

为获取当前值,我们只需调用:localStorage.myvalue;
现在我把它放在一个像这样的对象中:

var myObj = {
  myval: localStorage.myvalue
}

当我设置myObj.myval="somethingAgain";

的值时

然后这不起作用,通常可以通过这种方法轻松设置或获取对象,但在这种情况下为什么会这样呢?

通过调用myObj.myval来检索值,但为什么我无法在此处设置值?

那么建议我在哪里错了?

4 个答案:

答案 0 :(得分:4)

第一

localStorage.a = "value";

// create object
var ob = { a: localStorage.a };

console.log(ob.a); // "value"

当你做这样的事情时:

ob.a = "asfasf"
console.log(ob.a); // "asfasf"
console.log(localStorage.a); "value"

值不会改变,因为ob.a等于值, IT NOT A REFERENCE它的值, 你可以通过localStorage.a获得价值!

工作版

var ob = { a: function(value){ return localStorage.a = value; }};
ob.a("value"); // returns "value"
console.log(localStorage.a); // "value"

答案 1 :(得分:2)

这似乎可以通过以下小调整来实现。

<强>更新

对你来说太久了,速记更好?

var myObj = {
    myval: function(val){ 
        return (typeof (val) === 'undefined' ? localStorage.myvalue : localStorage.myvalue=val);
    }
}

比调用它来设置

myObj.myval("Add this");

或获得

myObj.myval();

小提琴:http://jsfiddle.net/4WsNx/

希望这有帮助。

答案 2 :(得分:1)

您可以使用Object.prototype.__defineGetter__()Object.prototype.__defineSetter__()

或使用getset运算符。

但请记住,旧浏览器不支持这些内容!

答案 3 :(得分:1)

你的具体问题是你将一个原语定义为localStorage-object的属性而不是local和object作为localStorage的属性,所以你没有引用但只有一个值。

解决方案可以将整个localStorage定义为如下属性:

var obj = { store: localStorage };
obj.store.setItem('key','a value');
obj.store.getItem('key');