localStorage هو جزء من Web Storage API يسمح بتخزين بيانات في المتصفح بشكل دائم (حتى بعد إغلاق المتصفح).
البيانات تبقى محفوظة حتى يتم حذفها يدويًا أو من خلال الكود.
💡 خصائص Local Storage:
| الخاصية | القيمة |
|---|---|
| التخزين | دائم (يبقى حتى يُحذف يدويًا) |
| السعة | حوالي 5 إلى 10 ميجابايت حسب المتصفح |
| التخزين حسب النطاق | نعم (يعمل فقط داخل نفس الموقع/النطاق) |
| نوع البيانات | يتم تخزين البيانات كـ نصوص (Strings) فقط |
📦 دوال التعامل مع localStorage:
| الوظيفة | الدالة |
|---|---|
| إضافة أو تعديل عنصر | localStorage.setItem(key, value) |
| قراءة عنصر | localStorage.getItem(key) |
| حذف عنصر | localStorage.removeItem(key) |
| حذف كل العناصر | localStorage.clear() |
| عدد العناصر الموجودة | localStorage.length |
| الحصول على مفتاح حسب الفهرس | localStorage.key(index) |
✅ أمثلة شاملة:
🟢 1. حفظ بيانات:
localStorage.setItem("username", "Yasin");JavaScriptيخزن مفتاح username بالقيمة Yasin.
🟢 2. قراءة بيانات:
let name = localStorage.getItem("username");
console.log(name); // YasinJavaScript🟢 3. تعديل قيمة موجودة:
localStorage.setItem("username", "Ahmed"); // يتم استبدال القيمةJavaScript🟢 4. حذف عنصر:
localStorage.removeItem("username");JavaScript🟢 5. حذف جميع العناصر:
localStorage.clear();JavaScript🟢 6. معرفة عدد العناصر:
console.log(localStorage.length); // عدد المفاتيح المخزنةJavaScript🟢 7. جلب اسم مفتاح حسب ترتيبه:
let firstKey = localStorage.key(0);
console.log(firstKey);JavaScript🔁 تخزين واسترجاع كائن (Object)
localStorage.setItem("user", {name: "Ali"}); // ❌ يخزن [object Object]JavaScript✅ الصحيح: استخدم JSON
let user = { name: "Ali", age: 25 };
localStorage.setItem("user", JSON.stringify(user));JavaScript🟢 قراءة:
let userData = JSON.parse(localStorage.getItem("user"));
console.log(userData.name); // AliJavaScriptlet color = document.getElementById("color");
let color1 = document.getElementById("color1");
// Apply stored background color on page load
document.body.style.backgroundColor = localStorage.getItem("color");
// When color button is clicked
color.addEventListener("click", () => {
window.localStorage.setItem("color", "green");
document.body.style.backgroundColor = "green";
});
color1.addEventListener("click", () => {
window.localStorage.setItem("color", "blue");
document.body.style.backgroundColor = "blue";
});JavaScript🧪 مثال تطبيقي كامل (HTML + JS)
<input type="text" id="usernameInput" placeholder="اكتب اسمك">
<button onclick="saveName()">💾 حفظ</button>
<button onclick="loadName()">📥 تحميل</button>
<button onclick="deleteName()">🗑️ حذف</button>
<p id="output"></p>
<script>
function saveName() {
let name = document.getElementById("usernameInput").value;
localStorage.setItem("username", name);
alert("تم الحفظ!");
}
function loadName() {
let name = localStorage.getItem("username");
document.getElementById("output").innerText = name ?? "لا يوجد اسم محفوظ";
}
function deleteName() {
localStorage.removeItem("username");
alert("تم الحذف");
}
</script>
JavaScript⚠️ ملاحظات مهمة:
- لا يمكن تخزين تواريخ أو دوال أو كائنات مباشرة بدون تحويلها إلى نصوص.
localStorageيعمل فقط في المتصفح (client-side).- كل موقع يملك مساحة تخزين مستقلة.
- غير مناسب لتخزين بيانات حساسة (لأنه قابل للعرض من أدوات التطوير بسهولة).
🎁 مقارنة سريعة مع sessionStorage
| الميزة | localStorage | sessionStorage |
|---|---|---|
| المدة الزمنية | دائم | حتى غلق التبويب فقط |
| المساحة | ~5-10MB | ~5MB |
| المشاركة بين التبويبات | نعم | لا |