نحوه ذخیره اشیاء در HTML5

نحوه ذخیره اشیاء در HTML5 localStorage/sessionStorage

آنچه که در این مقاله خواهید خواند:

سوال

من می خواهم یک شی جاوا اسکریپت را در 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 این است که ورودی را قبل از ذخیره کردن به رشته تبدیل می کند.

من این رفتار را در سافاری، کروم و فایرفاکس می ‌بینم، بنابراین تصور می‌ کنم که درک نادرست من از مشخصات فضای ذخیره ‌سازی وب HTML5 است، نه یک اشکال یا محدودیت خاص مرورگر.

من سعی کرده ام الگوریتم کلون ساخت یافته را که در زیرساخت 2 مشترک توضیح داده شده است، معنا کنم. به طور کامل متوجه نمی ‌شوم که چه می ‌گوید، اما شاید مشکل من مربوط به غیرقابل شمارش بودن ویژگی ‌های شیء من باشد (؟؟؟).

پاسخ:

با نگاهی دوباره به اسناد اپل، موزیلا و مجدد موزیلا، به نظر می ‌رسد که این عملکرد فقط به جفت‌ های کلید/مقدار رشته محدود می ‌شود.

یک راه ‌حل می‌ تواند این باشد که قبل از ذخیره‌ سازی شی، آن را رشته‌ بندی کنید، و بعداً وقتی آن را بازیابی می‌ کنید، تجزیه اش کنید:

var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));

برای یادگیری زبان برنامه نویسی جاوا اسکریپت و وارد بازار کار شدن کافیه که وارد مسیر کارآموزی فرانت اند بشی.

پاسخ‌ها

آدرس ایمیل شما منتشر نخواهد شد.

پل ورود به بازار تکنولوژی

مشاوره رایگان انتخاب مسیر

با کمک مشاورهای رستاوا آکادمی مسیر کارآموزی مناسب برای خودت رو برای ورود به بازار کار تکنولوژی انتخاب کن

توسعه فردی برای حرفه‌ای شدن

منتورهای رستاوا و دوره‌های ما شما رو برای کارآموزی و در نهایت جذب و استخدام آماده میکنن

مدرک بین المللی و استانداردهای جهانی

یادگیری با استاندار های بین المللی و دریافت مدرک از Credx Academy کانادا

اگر در مسیرهای کارآموزی ما پذیرش بگیری موقعیت‌های کارآموزی و استخدام در پروژه‌ها و شرکت های بین المللی از طریق مجموعه رستاوا به روت باز می شه.

۲ هفته رایگان

همین حالا با منتورها

ارتباط آنی بگیر!