2015-11-27 7 views
8

जब मैं localStorage आइटमक्या स्थानीय स्टोरेज में इंटीजर वैल्यू को जावास्क्रिप्ट ऑब्जेक्ट्स में स्टोर करना संभव है और टाइपकास्टिंग के बिना इसे निकालना संभव है?

localStorage.setItem('a',1) 

को पूर्णांक मान निर्दिष्ट करेंगे और उसके प्रकार

typeof(localStorage.a) 
"string" 

यह रिटर्न स्ट्रिंग, मैं इसे पूर्णांक करने के लिए अपने इस्तेमाल के लिए अपने टाइपकास्ट कर सकते हैं की जाँच

parseInt(localStorage.a) 

मेरा प्रश्न यह है कि पूर्णांक मूल्य इन्सि स्टोर करना संभव है डी लोकस्टॉरेज के रूप में मैं जावास्क्रिप्ट वस्तुओं के लिए टाइपकास्टिंग के बिना कर सकते हैं?

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

लोकल स्टोरेज केवल स्ट्रिंग मानों को स्टोर कर सकता है। – Tholle

+0

यह टाइपकास्टिंग नहीं है, यह रूपांतरण है। जावास्क्रिप्ट में टाइपकास्टिंग नहीं है (क्योंकि जावास्क्रिप्ट में टाइप किए गए चर नहीं हैं)। –

उत्तर

9

मेरा प्रश्न यह localStorage अंदर पूर्णांक मान के रूप में मैं typecasting बिना जावास्क्रिप्ट वस्तुओं के लिए कर सकते हैं स्टोर करने के लिए संभव है?

सं

भंडारण वस्तुओं सरल कुंजी-मान स्टोर, वस्तुओं के समान हैं, लेकिन वे पृष्ठ लोड के माध्यम से बरकरार रहते हैं। चाबियाँ तार या पूर्णांक हो सकती हैं, लेकिन मान हमेशा तार होते हैं। [source]

+0

जिसका अर्थ है कि हर बार मुझे गणितीय गणना करने के लिए टाइपकास्ट करने की आवश्यकता होती है? – nickalchemist

+0

युप (मान लीजिए कि आप स्ट्रिंग पर गणना नहीं कर सकते हैं, जो आप संभवतः नहीं कर सकते हैं, और यहां तक ​​कि अधिक संभावना नहीं होनी चाहिए)। –

2

वास्तव में आप, अगर हम सहमत हैं कि पार्स typecasting के समान नहीं है कर सकते हैं:

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

Fiddle के बाद से अधिक संरक्षित stacksnippets localStorage अनुमति नहीं है।

सादगी के लिए, आपको हमेशा जेएसओएन को स्ट्रिंग करना चाहिए जो आप स्थानीय स्टोरेज में सहेज रहे हैं, इस तरह आपको उस चीज़ के बारे में सोचना नहीं है जो आप सहेज रहे हैं/पुनर्प्राप्त कर रहे हैं, और आप "[object Object]" से बचने से बचेंगे।

संबंधित मुद्दे

 संबंधित मुद्दे