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

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • LardTardProductions's channel

    LardTardProd

    10 NİSAN 2009