TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #568 363
چرا کپی کردن یک Object در JavaScript همیشه کپی واقعی نیست؟ 🤔

این کد رو ببین:

const user = {
name: "Ahmad",
settings: {
theme: "dark"
}
};

const copy = { ...user };

copy.name = "Ali";
copy.settings.theme = "light";

console.log(user.name);
// Ahmad

console.log(user.settings.theme);
// light 😐

چی شد؟!

ما که user رو کپی کرده بودیم!

مشکل اینجاست که Spread Operator فقط یک Shallow Copy می‌سازه.

یعنی لایه اول Object کپی میشه، ولی Objectهای تو‌در‌تو همچنان به همان Reference قبلی اشاره می‌کنن.

پس:

copy.settings === user.settings
// true

اما برای کپی عمیق می‌تونی از ()structuredClone استفاده کنی:

const copy = structuredClone(user);

copy.settings.theme = "light";

console.log(user.settings.theme);
// dark

حالا:

copy.settings === user.settings
// false

🔥 این تفاوت توی پروژه‌هایی که با State، API Response یا Objectهای تو‌در‌تو کار می‌کنی خیلی مهمه.

نکته حرفه‌ای:

تابع JSON.parse(JSON.stringify(obj)) هم یک روش قدیمی برای Deep Copy محسوب میشه، اما محدودیت‌های مهمی داره و برای همه داده‌ها مناسب نیست.

اگر با JavaScript حرفه‌ای کار می‌کنی، ()structuredClone رو بشناس.

@CodeVerse_dev
  • 👍 5
  • ❤ 3
More from @codeverse_dev
  1. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  2. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  3. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  4. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
  5. Oct 6, 2026اگر Chrome استفاده می‌کنی، این آپدیت را جدی بگیر ⚡ نسخه Stable مرورگر Chrome برای دسکتاپ ب…
  6. Oct 6, 2026🖥 سازنده محتوایی؟ ویندوزت بدون این ۵ نرم‌افزار نصفه‌ست! خب راستشو بخوای، من خودم تا چند و…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →