Object Reference
🔹 ۱. اشیاء در جاوااسکریپت با Reference ذخیره میشوند
برخلاف مقادیر ساده (Primitive مثل string, number, boolean …) که با value ذخیره میشن، آبجکتها (Object, Array, Function) با reference (آدرس در حافظه) نگهداری میشن.
یعنی وقتی یک آبجکت رو به متغیر دیگهای نسبت بدی، هر دو متغیر به همون آبجکت در حافظه اشاره میکنن.
2️⃣ مثال ساده
👉 چون هر دو به یک reference اشاره میکنن، تغییر روی یکی روی اون یکی هم اثر میذاره.
3️⃣ مقایسه Reference
حتی اگر محتوا یکی باشه، تا وقتی reference یکی نباشه، برابر نیستن.
4️⃣ تغییر بدون اثرگذاری روی شیء اصلی (کپی)
برای اینکه یک آبجکت رو مستقل از دیگری کپی کنیم، باید کپی عمیق یا سطحی انجام بدیم.
کپی سطحی (Shallow Copy)
کپی عمیق (Deep Copy)
اگر شیء تو در تو (nested) باشه، shallow copy کافی نیست:
5️⃣ Reference در آرایهها
👉 چون هر دو آرایه به یک reference اشاره دارن.
📌 خلاصه
-
Primitive types → با مقدار (Value) ذخیره میشن.
-
Objects, Arrays, Functions → با آدرس حافظه (Reference) ذخیره میشن.
-
نسبت دادن یک object به متغیر جدید = فقط کپی reference.
-
برای داشتن نسخه جدا، باید کپی سطحی یا عمیق انجام بدیم.