برنامه نویسی

تفاوت بین کپی معمولی و کپی کم عمق، کپی عمیق در شی جاوا اسکریپت چیست

سلام به همه امیدوارم حالتون عالی باشه

امروز می خواهم تفاوت بین آنها را توضیح دهم

  1. کپی معمولی در شی جاوا اسکریپت
  2. کپی کم عمق در شی جاوا اسکریپت
  3. کپی عمیق در آبجکت جاوا اسکریپت

توجه: در جاوا اسکریپت، اشیاء توسط مرجع ارسال و تخصیص داده می شوند (به طور دقیق تر، مقدار یک مرجع)

اجازه دهید ابتدا با کپی معمولی در شی جاوا اسکریپت شروع کنیم

کپی معمولی در شی جاوا اسکریپت

به طور خلاصه، هنگامی که ویژگی های شی اصلی را تغییر می دهید، ویژگی های شی کپی شده نیز تغییر می کند (و بالعکس)

بیایید یک مثال بزنیم:

// Normal copy  in Js Object

const person = {
  name: "Abdeldjalil",
  country: "Algeria"
};

const newPerson = person;

/*
Now if we make a change in
newPerson object
will directly change 
in preson Object 

*/

newPerson.country = "Canda"; // also updates person.country

console.log(newPerson); // {name: "Abdeldjalil", country: "Canda"}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کپی کم عمق در شی جاوا اسکریپت

به طور خلاصه، ویژگی های سطح بالا برای اصل و شیء کپی شده منحصر به فرد خواهد بود. هر چند ویژگی های تودرتو در بین هر دو شی به اشتراک گذاشته خواهد شد. از عملگر spread استفاده کنید ...{} یا Object.assign()

برای درک بیشتر مثالی بزنیم

// Shallow copy  in Js Object

const person = {
  name: "Abdeldjalil",
  country: "Algeria",
  job: {
    category: "web developement",
    profession: "Front-End Web Developer"
  }
};

const newPerson = { ...person };

/*

Now if we make a change in
Top level properties in newPerson object
will not  change 
in preson Object 
but if we make change in Nested Properties in this case 
Job property  will change 

*/

// top levele property
newPerson.name = "John Dev"; // will not updates person.name

// Nested  property
newPerson.job.profession = "Backend Devloper"; // also updates person.job.profession

console.log(newPerson); `// {name: "John Dev", country: "Algeria", job: Object} name: "Abdeldjalil" country: "Algeria" job: { category: "web developement" profession: "Backend Devloper"}}`

console.log(person); `// {name: "Abdeldjalil", country: "Algeria", job: Object} name: "Abdeldjalil" country: "Algeria" job: { category: "web developement" profession: "Backend Devloper"}}`


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کپی عمیق در آبجکت جاوا اسکریپت

به طور خلاصه، همه ویژگی ها برای شی اصلی و کپی شده، حتی ویژگی های تودرتو منحصر به فرد هستند. برای کپی عمیق، شی را به JSON سریال کنید و آن را به یک شی JS تجزیه کنید.

بیایید یک مثال در مورد آن بزنیم

// Shallow copy  in Js Object

const person = {
  name: "Abdeldjalil",
  country: "Algeria",
  job: {
    category: "web developement",
    profession: "Front-End Web Developer"
  }
};

const newPerson = JSON.parse(JSON.stringify(person));

/*

Now if we make a change in
Top level properties in newPerson object
or even in nested  properties will not change 
in preson Object 

*/

// top levele property
newPerson.name = "Setiv Smith "; // will not updates person.job.profession

// Nested  property
newPerson.job.profession = "Fullstack Devloper"; // will not update  person.job.profession

console.log(newPerson); `// {name: "Setiv Smith ", country: "Algeria", job: Object} name: "Setiv Smith " country: "Algeria" job: { category: "web developement" profession: "Fullstack Devloper" }`

console.log(person); `// {name: "Abdeldjalil ", country: "Algeria", job: Object} name: "Setiv Smith " country: "Algeria" job: { category: "web developement" profession: "Front-End Web Developer" }`


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا