نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
JS

منهج JavaScript

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج JavaScript/التخزين المحلي والمؤقت في المتصفح (Local Storage & Session Storage)

التخزين المحلي والمؤقت في المتصفح (Local Storage & Session Storage)

localstorage javascriptsessionstorage javascriptالتخزين المحلي في المتصفحjson.stringify json.parseweb storage api

جدول مرجعي سريع

1
الخاصيةlocalStoragesessionStorage
مدة البقاءدائمة حتى الحذف الصريححتى إغلاق التبويب فقط
المشاركة بين التبويباتنعم (نفس الأصل)لا، لكل تبويب بياناته
السعة التقريبية5-10 ميغابايت5-10 ميغابايت

الشرح

يوفر المتصفح آلية لتخزين بيانات صغيرة مباشرة على جهاز المستخدم، دون الحاجة لخادم، عبر واجهتين متشابهتين تماماً في الاستخدام: localStorage وsessionStorage. الفرق الجوهري الوحيد بينهما هو مدة بقاء البيانات — localStorage تحتفظ بالبيانات بشكل دائم حتى يحذفها المستخدم أو الكود صراحة، حتى بعد إغلاق المتصفح تماماً وإعادة فتحه لاحقاً. بينما sessionStorage تُمسح تلقائياً بمجرد إغلاق تبويب المتصفح أو النافذة.

كلا الواجهتين تخزنان البيانات فقط على شكل نصوص (Strings) — لا يمكن تخزين كائنات أو مصفوفات جافاسكريبت مباشرة. للتغلب على هذا القيد عند تخزين بيانات مركبة، يجب تحويلها أولاً لنص عبر JSON.stringify() قبل التخزين، ثم تحويلها مجدداً لكائن حقيقي عبر JSON.parse() عند استرجاعها لاحقاً — وهذا النمط شائع جداً ويُستخدم في كل مشروع يعتمد على هذا التخزين.

الدوال الأساسية متطابقة بين الواجهتين: setItem(مفتاح, قيمة) للتخزين، getItem(مفتاح) للاسترجاع (يُعيد null إن لم يوجد المفتاح)، removeItem(مفتاح) لحذف عنصر واحد، وclear() لمسح كل البيانات المخزَّنة دفعة واحدة بالكامل.

من القيود المهمة الواجب معرفتها: السعة التخزينية محدودة (عادة حوالي 5-10 ميغابايت حسب المتصفح)، والبيانات مرتبطة بـ "أصل" (Origin) محدد — أي نطاق موقع + بروتوكول + منفذ — فلا يمكن لموقع الوصول لبيانات مخزَّنة من موقع آخر مختلف تماماً لأسباب أمنية. كذلك يجب عدم تخزين أي بيانات حساسة (كلمات مرور، معلومات بطاقات ائتمان) في localStorage أبداً، لأنها متاحة بالكامل لأي كود JavaScript يعمل على نفس الصفحة، بما فيها هجمات XSS المحتملة.

الصياغة (Syntax)

syntax
1// تخزين نص بسيط
2localStorage.setItem("الاسم", "علي");
3console.log(localStorage.getItem("الاسم")); // "علي"
4
5// تخزين كائن (يحتاج تحويل)
6const مستخدم = { اسم: "سارة", عمر: 28 };
7localStorage.setItem("مستخدم", JSON.stringify(مستخدم));
8const مستخدم_محفوظ = JSON.parse(localStorage.getItem("مستخدم"));
9
10localStorage.removeItem("الاسم");
11localStorage.clear();

أمثلة عملية

مثال 1: حفظ واسترجاع بيانات مركبة (قائمة مهام)

حفظ واسترجاع بيانات مركبة (قائمة مهام)
1// حفظ واسترجاع قائمة مهام كاملة
2function حفظ_المهام(مهام) {
3 localStorage.setItem("المهام", JSON.stringify(مهام));
4}
5
6function تحميل_المهام() {
7 const مخزَّن = localStorage.getItem("المهام");
8 return مخزَّن ? JSON.parse(مخزَّن) : []; // قيمة افتراضية إن لم توجد بيانات
9}
10
11const المهام = تحميل_المهام();
12المهام.push({ نص: "تعلم جافاسكريبت", منجزة: false });
13حفظ_المهام(المهام);

مثال 2: الفرق العملي في دورة حياة كل نوع تخزين

الفرق العملي في دورة حياة كل نوع تخزين
1// الفرق العملي بين localStorage و sessionStorage
2sessionStorage.setItem("رمز_الجلسة", "abc123");
3localStorage.setItem("تفضيل_الوضع_الليلي", "true");
4
5// بعد إغلاق التبويب وإعادة فتحه:
6// sessionStorage.getItem("رمز_الجلسة") -> null (تم مسحه)
7// localStorage.getItem("تفضيل_الوضع_الليلي") -> "true" (باقٍ)

نصائح احترافية

  • —كل القيم المخزَّنة نصوص فقط — استخدم JSON.stringify() عند التخزين وJSON.parse() عند الاسترجاع للبيانات المركبة.
  • —getItem() تُعيد null إن لم يوجد المفتاح — تحقق من ذلك دائماً قبل استخدام JSON.parse() لتجنب خطأ.
  • —لا تُخزّن أبداً بيانات حساسة (كلمات مرور، بيانات بطاقات) في localStorage — عرضة للوصول عبر أي كود يعمل على الصفحة.
  • —استخدم localStorage للتفضيلات الدائمة (وضع ليلي، لغة)، وsessionStorage للبيانات المؤقتة الخاصة بجلسة واحدة فقط.

الدرس السابق

عوامل التوزيع والجمع (Spread & Rest Operators)

الدرس التالي

التعامل مع بيانات JSON (JSON Parse & Stringify)

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر