2015-11-27 10 views
8

Ben localStorage öğesilocalStorage'da tamsayı değerini, Javascript nesnelerine benzer şekilde depolamak ve typecasting olmadan ayıklamak mümkün mü?

localStorage.setItem('a',1) 

için tamsayı değeri atamak ve türünü de dize, benim kullanım için int bunu typecasting yapabilirsiniz döndürür

typeof(localStorage.a) 
"string" 

işaretlediğinizde

parseInt(localStorage.a) 

Benim soru tamsayı değeri insi depolamak mümkün mü typecasting olmadan Javascript nesneleri için yapabileceğiniz gibi de localStorage?

a={}; 
a.number=1; 
typeof(a.number) 
"number" 
+0

LocalStorage yalnızca dize değerlerini kaydedebilir. – Tholle

+0

Bu, tahmin değil, dönüşüm. JavaScript'te bir eleştiri yok (JavaScript'in yazdığı değişkenler olmadığı için). –

cevap

9

Sorum ben tiplemeleri olmadan JavaScript nesneler için yapabileceğiniz gibi localStorage içindeki tamsayı değeri saklamak mümkündür?

sayılı

Depolama nesneleri nesnelere benzeyen basit anahtar-değer mağazaları, fakat bunlar sayfa yüklendikten yoluyla bozulmadan kalır. Anahtarlar dize veya tamsayı olabilir, , ancak değerler her zaman dizeleridir. Biz ayrıştırma tiplemeleri ile aynı olmadığını kabul ediyorsanız [source]

+0

, matematiksel hesaplamaları yapmak için her zaman yazmak zorunda olduğum anlamına gelir? – nickalchemist

+0

Yup (hesaplamayı, dizenin kendisinde yapamayacağınızı varsayarak, muhtemelen yapamayacağınızı ve daha da büyük olasılıkla) yapamayacağınızı varsayarak). –

2

Aslında, olabilir: aşırı korunan stacksnippets localStorage izin vermez

let val = 42; 
localStorage.answer = JSON.stringify(val); 
let saved = JSON.parse(localStorage.answer); 
console.log(saved === val); // true 

Fiddle beri.

Basitlik için, her zaman localStorage'a kaydettiğiniz şeyleri JSON'a dizginlemelisiniz, bu şekilde kaydetme/alma hakkında ne düşünmeniz gerekmiyor ve "[object Object]"'un kaydedilmesini engelleyeceksiniz.

İlgili konular