8

車と呼ばれるオブジェクトの作成:

function car(temp){

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

var temp = ['Skoda', 'Red', '2012'];
car = new car(temp);
  1. localStorageから読み取った後、オブジェクトを設定して文字列化します。

    localStorage.setItem('car',car);
    car = localStorage.getItem('car');
    car = JSON.stringify(car);
    

    stringify後の車----------------->[objectObject] at file:/// android_asset / www / .. ..

  2. オブジェクトをStringifyし、その後、オブジェクトをlocalStorageに設定します。 localStorage.setItem('car',JSON.stringify(car)); car = localStorage.getItem('car');

stringify後の車----------------->"{\"brand \ ":\" Skoda \ "、\" color \ ":\" Red \ "、\" year \ ":\" 2012 \ "}" at 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 -----> undefined

4

4 に答える 4

17

私の理解では、文字列化されたオブジェクトはオブジェクトではなくなるため、使用できません。それは文字列です。

したがって、文字列に対して実行しようとすると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);

これは、car オブジェクトが文字列ではなくオブジェクトであることを意味します。

これを行う場合、stringify を使用してローカル ストレージに書き込み、parse を使用して読み取ります。

于 2012-08-21T09:01:01.340 に答える
10

JavaScript オブジェクトを localStorage に保存することはできません。この質問を参照してください

したがって、2番目のオプションを使用してください。最初にオブジェクトを文字列化して保存します。そして後でそれを拾い上げて、JavaScript オブジェクトに解析します。

localStorage.setItem('car',JSON.stringify(car));
carString = localStorage.getItem('car');
car = JSON.parse(carString);
console.log(car.brand); // Skoda
于 2012-08-21T08:59:55.907 に答える
0

最新のブラウザーはlocalStorage、オブジェクトとしてネイティブにサポートするようになりました。これを Chrome v44 と Firefox v34 でテストしました。

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

typeof localStorage
"object"

だからこれから。大丈夫です。

于 2015-02-21T21:31:36.493 に答える
0

私は最近、この同じ問題に直面していました。私が書いたこのスクリプトをチェックしてください。
https://github.com/andresgallo/truStorage

これにより、ローカル ストレージ内のオブジェクトの格納と取得が可能になります。必要に応じて、オブジェクトをオブジェクトとして自動的に返します。もう 1 つのことは、ネストされたオブジェクト内の項目も設定および取得することです。そのすべての最も良い部分は、小さなスクリプトです。

于 2012-09-19T12:31:15.510 に答える