Javascript 使用stringify设置对象并将其获取到本地存储?

Javascript 使用stringify设置对象并将其获取到本地存储?,javascript,object,local-storage,stringify,Javascript,Object,Local Storage,Stringify,创建名为car的对象: function car(temp){ this.brand=temp[0]; this.color=temp[1]; this.year=temp[2]; } var temp = ['Skoda', 'Red', '2012']; car = new car(temp); 从localStorage读取后设置对象和字符串化: localStorage.setItem('car',car); car = localStorage.getIt

创建名为car的对象:

function car(temp){

    this.brand=temp[0];
    this.color=temp[1];
    this.year=temp[2];
}

var temp = ['Skoda', 'Red', '2012'];
car = new car(temp);
  • 从localStorage读取后设置对象和字符串化:

    localStorage.setItem('car',car);
    car = localStorage.getItem('car');
    car = JSON.stringify(car);
    
    架线后的车辆----------------->[对象]在file:///android_asset/www/...

  • Stringify对象并在其之后将对象设置为localStorage:
    localStorage.setItem('car',JSON.stringify(car));
    car=localStorage.getItem('car')

  • 严格化后的汽车------------------->“{\'品牌\”:“斯柯达\”、“颜色\”:“红色\”、“年份\”:“2012 \”}”在file:///android_asset/www/...

    问题1:为什么在字符串化对象时顺序不同

    问题2:为什么我不能像这样使用字符串化对象:

    08-21 11:49:14.860: I/Web Console(9642): car after stringify----------------->     {"brand":"Skoda","color":"Red","year":"2012"}
    
    console.log(“car.brand----->”+car.brand);
    car.name----->未定义

    您不能存储JavaScript对象为localStorage

    所以,使用你的第二个选择。首先,将对象字符串化并存储它。然后将其提取并解析为javascript对象

    localStorage.setItem('car',JSON.stringify(car));
    carString = localStorage.getItem('car');
    car = JSON.parse(carString);
    console.log(car.brand); // Skoda
    

    根据我的理解,一旦你的字符串化对象被字符串化,你就不能使用它,因为它不再是一个对象。这是一根绳子

    因此,当您尝试在字符串上执行
    car.brand
    时,没有属性
    brand

    就我个人而言,在我看来,良好的做法是可行的

     function car(temp){
         this.brand=temp[0];
         this.color=temp[1];
         this.year=temp[2];
     }
    
     var temp = ['Skoda', 'Red', '2012'];
     car = new car(temp);
    
     localStorage.setItem('car',JSON.stringify(car)); 
     car = localStorage.getItem('car');
     car = JSON.parse(car);
    
    这意味着汽车对象现在不是字符串而是对象


    在执行此操作时,还可以使用stringify写入本地存储,使用parse读取。

    我最近也遇到了同样的问题。看看我写的这个脚本。


    它允许在本地存储器中存储和检索对象。如果需要,它会自动将对象作为对象返回。另一件事是在嵌套对象中设置和获取项。最棒的是它是一个很小的脚本。

    最新的浏览器现在支持本地存储作为本地对象。我已经在Chrome v44和Firefox v34上对此进行了测试:

    localStorage
    Storage {debug: "undefined", uid: "3", length: 2} 
    
    typeof localStorage
    "object"
    

    所以从现在开始。你会没事的。

    事实上,localStorage本身就是一个对象(上面的示例就是这样显示的),但它仍然只将数据存储为字符串。您可能会想到Chrome自己的存储API,
    Chrome.storage
    ,它与localStorage相同,但有一些扩展,包括本地存储对象的能力:(可能Firefox也有类似的功能,尽管我没有检查)