मैं HTML5 में जावास्क्रिप्ट ऑब्जेक्ट को स्टोर करना चाहता हूं localStorage
, लेकिन मेरा ऑब्जेक्ट स्पष्ट रूप से एक स्ट्रिंग में परिवर्तित हो रहा है।
मैं उपयोग कर आदिम जावास्क्रिप्ट प्रकारों और सरणियों को संग्रहीत और पुनः प्राप्त कर सकता हूं localStorage
, लेकिन ऑब्जेक्ट काम नहीं करते हैं। क्या उन्हें चाहिए?
यहाँ मेरा कोड है:
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);
कंसोल आउटपुट है
typeof testObject: object
testObject properties:
one: 1
two: 2
three: 3
typeof retrievedObject: string
Value of retrievedObject: [object Object]
यह मुझे जैसा दिखता है setItem
विधि इसे संचय करने से पहले इनपुट को एक स्ट्रिंग में परिवर्तित कर रही है।
मैं सफारी, क्रोम और फ़ायरफ़ॉक्स में इस व्यवहार को देखता हूं, इसलिए मुझे लगता है कि यह एचटीएमएल 5 वेब स्टोरेज की मेरी गलतफहमी है युक्ति , न कि ब्राउज़र-विशिष्ट बग या सीमा।
मैंने http://www.w3.org/TR/html5/infrastructure.html में वर्णित संरचित क्लोन एल्गोरिथ्म की समझ बनाने की कोशिश की है । मुझे पूरी तरह से समझ में नहीं आ रहा है कि यह क्या कह रहा है, लेकिन शायद मेरी समस्या का मेरे ऑब्जेक्ट के गुणों के साथ enumerable (???) नहीं है
क्या कोई आसान समाधान है?
अद्यतन: W3C ने अंततः संरचित-क्लोन विनिर्देश के बारे में अपने मन को बदल दिया, और कार्यान्वयन से मेल खाने के लिए कल्पना को बदलने का फैसला किया। Https://www.w3.org/Bugs/Public/show_bug.cgi?id=12111 देखें । इसलिए यह प्रश्न 100% मान्य नहीं है, लेकिन उत्तर अभी भी रूचि के हो सकते हैं।