दोनों प्रत्यक्ष संपत्ति का उपयोग ( localStorage.item
या localStorage['item']
) और कार्यात्मक इंटरफ़ेस का उपयोग करके ( localStorage.getItem('item')
) ठीक काम करते हैं। दोनों मानक और क्रॉस-ब्राउज़र संगत हैं। * युक्ति के अनुसार :
संग्रहण ऑब्जेक्ट पर समर्थित प्रॉपर्टी नाम प्रत्येक कुंजी / मान जोड़ी की कुंजी है जो वर्तमान में ऑब्जेक्ट से जुड़ी सूची में मौजूद है, इस क्रम में कि चाबियाँ अंतिम बार भंडारण क्षेत्र में जोड़ी गई थीं।
जब अनुरोधित नाम के साथ कोई कुंजी / मान जोड़ी नहीं मिलती है तो वे बस अलग तरह से व्यवहार करते हैं। उदाहरण के लिए, यदि कुंजी 'item'
मौजूद नहीं है, var a = localStorage.item;
में परिणाम होगा a
जा रहा है undefined
, जबकि var a = localStorage.getItem('item');
में परिणाम होगा a
मूल्य होने null
। जैसा कि आपने खोजा है, undefined
और null
जावास्क्रिप्ट / एक्मास्क्रिप्ट में विनिमेय नहीं है। :)
EDIT: जैसा कि क्रिस्टोफ़ अपने उत्तर में बताते हैं , कार्यात्मक इंटरफ़ेस मज़बूती से स्टोर करने और मानों को पूर्वनिर्धारित गुणों के बराबर मान के तहत पुनर्प्राप्त करने का एकमात्र तरीका है localStorage
। (इन के छह हैं: length
, key
, setItem
, getItem
, removeItem
, और clear
।) तो, उदाहरण के लिए, निम्नलिखित हमेशा काम:
localStorage.setItem('length', 2);
console.log(localStorage.getItem('length'));
विशेष रूप से ध्यान दें कि पहला कथन संपत्ति को प्रभावित नहीं करेगा localStorage.length
(शायद 'length'
पहले से कोई कुंजी नहीं होने पर इसे बढ़ाकर छोड़कर localStorage
)। इस संबंध में, कल्पना आंतरिक रूप से असंगत लगती है।
हालाँकि, निम्नलिखित शायद वह नहीं करेंगे जो आप चाहते हैं:
localStorage.length = 2;
console.log(localStorage.length);
दिलचस्प बात यह है कि, पहला क्रोम में एक नो-ऑप है, लेकिन फ़ायरफ़ॉक्स में कार्यात्मक कॉल का पर्याय है। दूसरा हमेशा मौजूद कीज की संख्या को लॉग करेगा localStorage
।
* यह उन ब्राउज़रों के लिए सही है जो पहली बार में वेब स्टोरेज का समर्थन करते हैं। (इसमें बहुत सारे आधुनिक डेस्कटॉप और मोबाइल ब्राउज़र शामिल हैं।) ऐसे वातावरण के लिए जो कुकीज़ या अन्य तकनीकों का उपयोग करके स्थानीय भंडारण का अनुकरण करते हैं, व्यवहार उस शिम पर निर्भर करता है जिसका उपयोग किया जाता है। इसके लिए कई पॉलीफिल मिल localStorage
सकते हैं ।
getItem
औरsetItem
कर रहे हैं मानकीकृत काम करने के रास्ते।