SORU
6 Ocak 2010, ÇARŞAMBA


HTML5 Nesneleri depolamak localStorage

*3 HTML5* JavaScript bir nesne saklamak için istiyorum ama benim nesne anlaşılan bir dizeye dönüştürülür ediliyor.

Ve ilkel JavaScript türleri localStorage ama nesneleri çalışmıyor kullanarak depolamak ve almak istiyorum. Onlar gerekir?

İşte benim kod:

var testObject = { 'one': 1, 'two': 2, 'three': 3 };
console.log('typeof testObject: '   typeof testObject);
console.log('testObject properties:');
for (var prop in testObject) {
    console.log('  '   prop   ': '   testObject[prop]);
}

// Put the object into storage
localStorage.setItem('testObject', testObject);

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('typeof retrievedObject: '   typeof retrievedObject);
console.log('Value of retrievedObject: '   retrievedObject);

Konsol çıkış yapıyor

typeof testObject: object
testObject properties:
  one: 1
  two: 2
  three: 3
typeof retrievedObject: string
Value of retrievedObject: [object Object]

setItem yöntem depolamadan önce bir dizeye giriş dönüştürüyor gibi görünüyor.

HTML5 Web Storage spec, tarayıcı özgü bir hata değil, yanlış anlama veya benim sınırlaması var herhalde Safari, Chrome ve Firefox bu davranışı görüyorum.

Bu anlam vermeye çalıştımklon yapılandırılmışalgoritma http://www.w3.org/TR/html5/infrastructure.html nitelendirdi. Tam olarak ne dediğini anlamadım, ama belki de sorun benim nesne özellikleri ile bir ilgisi yoktur sayısız varlık değil (???)

Kolay bir çözüm var mı?

CEVAP
6 Ocak 2010, ÇARŞAMBA


*,* *11 12* Microsoft belgelerine baktığımızda, sınırlı bir şekilde sadece dize anahtar/değer çiftleri ele gibi görünüyor.

Geçici bir çözüm bunu aldığınızda 14 ** saklamadan önce, nesne, ve daha sonra bunu ayrıştırmak için olabilir:

var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010