Çoğu modern tarayıcıda (Chrome, Firefox, IE 9+, Safari, Opera) çalışması gereken bir çevrimdışı HTML5 uygulaması geliştirmeye çalışıyorum. IndexedDB, Safari (henüz) tarafından desteklenmediğinden ve WebSQL kullanımdan kaldırıldığından, kullanıcı tarafından oluşturulan JavaScript nesnelerini ve JSON.stringify()
/JSON.parse()
nesnelerini yerleştirmek veya çıkarmak için localStorage kullanmaya karar verdim. Ancak, JSON.stringify()
'un yöntemleri ele almadığını öğrendim. İşte size basit bir yöntem ile örnek bir nesnedir: Ben (ve daha sonra localStorage koydu) bu nesneyi stringify Eğerjson.stringify nesne yöntemlerini işlemiyor
var myObject = {};
myObject.foo = 'bar';
myObject.someFunction = function() {/*code in this function*/}
, orada kalacağını bütün myObject.foo
değil myObject.someFunction()
olduğunu.
//put object into localStorage
localStorage.setItem('myObject',JSON.stringify(myObject));
//pull it out of localStorage and set it to myObject
myObject = localStorage.getItem('myObject');
//undefined!
myObject.someFunction
Senden emin birçok olasılıkla zaten bunu aramak istediğini bu sınırlama/özellik/biliyor değilim. Geldiğim geçici çözüm, yöntemlerle (myObject = new objectConstructor()
) bir nesne oluşturmak, object özelliklerini localStorage ürününden kaldırmak ve bunları oluşturduğum yeni nesneye atamaktır. Bunun bir dolambaçlı yaklaşım olduğunu hissediyorum, ancak JavaScript dünyasında yeniyim, bu yüzden bunu çözdüm. İşte buradaki büyük sorum: Tüm nesnenin (özellikler + yöntemler) localStorage'a dahil edilmesini istiyorum. Bunu nasıl yaparım? Belki bana daha iyi bir algoritma veya belki de bilmediğim başka bir JSON yöntemini gösterebilirseniz, bunu takdir ediyorum.
Fonksiyonlar JSON bulunmayan. Bakınız: http://json.org. –
Spekülasyonları okuduktan sonra düşündüğüm buydu, ama yöntemleri saklayabileceğim herhangi bir yol var mı? Yoksa benim nasıl böyle yaparsın? – user2649759
[JSON.stringify işlevi] 'nin olası bir kopyası (http://stackoverflow.com/questions/6754919/json-stringify-function) – Bergi