روش های ادغام دو شی در جاوا اسکریپت
یکی از روشهای متداول استفاده از عملگر پخش (spread operator) است که در استاندارد ECMAScript 2018 معرفی شده است. با این عملگر میتوان به سادگی خواص دو شی را به یک شی جدید ترکیب کرد. به عنوان مثال:
let merged = {...obj1, ...obj2};
در اینجا، merged شامل تمام خواص obj1 و obj2 خواهد بود و در صورت وجود نام مشابه، خواص obj2 بر obj1 اولویت خواهند داشت.
روش دیگر: استفاده از Object.assign
در نسخههای قدیمیتر جاوا اسکریپت، مانند ECMAScript 2015 (ES6)، میتوان از متد Object.assign استفاده کرد. این متد به شما این امکان را میدهد که خواص یک شی را به شی دیگر منتقل کنید:
Object.assign(obj1, obj2);
این متد تمام خواص obj2 را به obj1 اضافه میکند و در صورت وجود نام مشابه، مقادیر obj2 بر خواص obj1 جایگزین خواهند شد. همچنین، با استفاده از Object.assign({}, obj1, obj2) میتوانید یک شی جدید بسازید که شامل ترکیبی از خواص obj1 و obj2 باشد، بدون اینکه obj1 تغییر کند.
روشهای قدیمیتر
برای نسخههای بسیار قدیمیتر جاوا اسکریپت، میتوانید از یک حلقه برای کپی کردن خواص استفاده کنید:
for (var attrname in obj2) {
obj1[attrname] = obj2[attrname];
}
این کد تمام مقادیر obj2 را به obj1 اضافه میکند. اگر به حفظ obj1 اصلی نیاز دارید، بهتر است یک شیء جدید بسازید و خواص را به آن کپی کنید.
استفادۀ jQuery
اگر از jQuery استفاده میکنید، میتوانید از متد jQuery.extend() برای ادغام اشیا استفاده کنید. به عنوان مثال:
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
در این حالت، settings تغییر خواهد کرد و مقادیر options بر روی آن اعمال خواهد شد. اگر میخواهید یک شی جدید بدون تغییر در اشیا اولیه بسازید، میتوانید از این کد استفاده کنید:
var newSettings = $.extend({}, defaults, options);