Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取或设置对象内部的localStorage值_Javascript_Jquery_Html_Local Storage_Javascript Objects - Fatal编程技术网

Javascript 获取或设置对象内部的localStorage值

Javascript 获取或设置对象内部的localStorage值,javascript,jquery,html,local-storage,javascript-objects,Javascript,Jquery,Html,Local Storage,Javascript Objects,我在这里玩本地存储。并希望它获取或设置对象内部本地存储的值。我知道set或get项目是推荐的操作,但我发现: LocalStorage也可以通过使用来设置:LocalStorage.myvalue=“something” 为了获取当前值,我们只需调用:localStorage.myvalue 现在我把它放在一个对象中,比如: var myObj = { myval: localStorage.myvalue } 当我设置myObj.myval=“somethingain”的值时 那么这就不

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

LocalStorage也可以通过使用来设置:
LocalStorage.myvalue=“something”

为了获取当前值,我们只需调用:
localStorage.myvalue
现在我把它放在一个对象中,比如:

var myObj = {
  myval: localStorage.myvalue
}
当我设置myObj.myval=“somethingain”
的值时

那么这就不起作用了,通常通过这种方法可以很容易地设置或获取对象,但是在这种情况下为什么会发生呢

通过调用
myObj.myval
可以检索值,但是为什么我不能在这里设置值


所以请告诉我哪里错了?

这似乎可以通过以下小调整来完成

更新:

对你来说似乎太长了,速记更好吗

var myObj = {
    myval: function(val){ 
        return (typeof (val) === 'undefined' ? localStorage.myvalue : localStorage.myvalue=val);
    }
}
而不是像这样叫它集合

myObj.myval("Add this");
或者

myObj.myval();
小提琴:

希望这有帮助。

您可以使用和

或者使用and运算符

但请记住,旧浏览器不支持这些功能

首先

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等于值,它不是一个引用,而是一个值, 您可以通过执行localStorage.a

工作版本

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

具体的问题是,您将一个原语定义为localStorage对象的属性,而不是将对象定义为localStorage的属性,因此您没有引用,只有一个值

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

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

是的,你说得对,但是,如果我也想要相同的返回值呢?请告诉我为什么我的代码不起作用的正确原因?我编辑了我的代码,这样你就可以对两个请求使用相同的对象,只需省略它将获得的值,并在()中添加它将设置的值,@fuserthrower User的缩写是什么?嗯,不确定,对不起。如果FuserThrowerr已经为您回答了这个问题,请务必接受他的回答:)。就我个人而言,我做这件事的方式就是我使用它的方式,看起来更干净。谢谢你的帮助……:)哦。。不要用抱歉!!测试此代码时返回值不起作用?未定义!!