将一个对象填入window.localStorage后访问不到其中的属性?

window.localStorage.setItem('obj', {name: 'hhh', age: 100});

localStorage.obj 是存在的,但 localStorage.obj.name 是undefined.

请问如何访问到name的value?

阅读 5.6k
7 个回答

localStorage注意事项

一般我们会将JSON存入localStorage中,但是在localStorage会自动将localStorage转换成为字符串形式

这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串

示例:

if(!window.localStorage){
    alert("浏览器不支持localstorage");
}else{
    var storage=window.localStorage;
    var data={
        name:'luozz',
        sex:'man',
        hobby:'program'
    };
    var d=JSON.stringify(data);
    storage.setItem("data",d);
    console.log(storage.data);
}
 

读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法

var storage=window.localStorage;
var data={
    name:'luozz',
    sex:'man',
    hobby:'program'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
//将JSON字符串转换成为JSON对象输出
var json=storage.getItem("data");
var jsonObj=JSON.parse(json);
console.log(typeof jsonObj);
打印出来是Object对象

另外还有一点要注意的是,其他类型读取出来也要进行转换

localStorage存的是字符串
你需要先转成JSON字符串,再存
取得时候,先转成对象

 var obj = {"a": 1,"b": 2}; 

 obj = JSON.stringify(obj); 

 window.localStorage.setItem("temp2", obj);//返回{"a":1,"b":2};

 obj=JSON.parse(window.localStorage.getItem("temp2"));

谢邀,你可以试下以下代码,如果存储对象,需要进行一波转换 存:对象-》字符串; 取:字符串-》对象

let obj = {name: 'hhh', age: 100};
window.localStorage.setItem('obj', JSON.stringify(obj));

let getObj = JSON.parse(window.localStorage.getItem('obj'));

localStorage只存字符串。

localStorage和sessionStorage只能存字符串,存对象的时候需要JSON.stringify这个对象,取的时候需要JSON.parse这个字符串。

localStorage只能保存字符串,
所以你传入对象时就会自动调用对象的toString()
所以你打印一下localStorage.obj
你会发现结果是[object Object]字符串

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题