متد Object.assign() - آزمون آنلاین جاوااسکریپت
این آزمون در مورد متد Object.assign() در زبان برنامه نویسی جاوااسکریپت هست. اینجا قراره دانش و مهارت تو رو در استفاده از این متد بسنجم.
متد Object.assign(): یک نگاه دقیق
در دنیای جاوااسکریپت، گاهی اوقات نیاز داریم که ویژگیهای یک یا چند شیء رو به یک شیء دیگه منتقل کنیم. اینجا Object.assign() وارد صحنه میشه!
این متد به ما اجازه میده که تمام ویژگی های قابل شمارش و متعلق به خود یک یا چند شیء منبع (source) رو به یک شیء هدف (target) کپی کنیم. به بیان ساده، انگار داریم ویژگیهای چند تا شیء رو با هم ترکیب میکنیم.
با انجام این کوییز میتونی میزان تسلط خودت رو درباره متد Object.assign() بسنجی و همزمان کلی نکته مفید و اطلاعات جدید یاد بگیری.

نکات مهمی که باید بدونی
قبل از اینکه وارد جزئیات بشیم، چند تا نکته کلیدی هست که باید حواست بهشون باشه. اول اینکه Object.assign() یک کپی سطحی (shallow copy) ایجاد میکنه.
یعنی اگه یکی از ویژگیها خودش یک شیء باشه، فقط مرجع (reference) اون شیء کپی میشه، نه خود شیء. نکته بعدی اینکه این متد اگه یک کلید تکراری ببینه، کلید بعدی جایگزین قبلی میشه.
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const combinedObj = Object.assign({}, obj1, obj2);
// combinedObj حالا { a: 1, b: 3, c: 4 } است
مثلا در این کد، مقدار b از obj2، مقدار b از obj1 رو بازنویسی کرد.
این متد کاربردهای زیادی داره. چند تا از مهمترینهاشون رو اینجا میگم:
-
ادغام دو یا چند شیء: این سادهترین و شاید رایجترین کاربردش باشه.
-
تنظیم مقادیر پیشفرض برای یک شیء: مثلا اگه یک تابع داری که یک شیء به عنوان آرگومان میگیره، میتونی مقادیر پیشفرض رو با استفاده از
Object.assign()بهش اضافه کنی. -
کلون کردن (copy) یک شیء: اگه میخوای یک کپی از یک شیء داشته باشی، میتونی اون رو به یک شیء خالی کپی کنی.
نمونههایی از کاربرد در جاوااسکریپت
بیاید چند تا مثال واقعی رو با هم بررسی کنیم تا قشنگ دستت بیاد که چطور کار میکنه.
const defaultOptions = {
theme: 'dark',
fontSize: '16px'
};
const userOptions = {
fontSize: '18px'
};
const finalOptions = Object.assign({}, defaultOptions, userOptions);
// حالا finalOptions: { theme: 'dark', fontSize: '18px' } است
در این مثال، finalOptions مقادیر پیشفرض رو از defaultOptions و مقادیر سفارشی رو از userOptions دریافت میکنه و در نهایت مقدار fontSize توسط مقدار کاربر بازنویسی میشه.
const source = { a: 1, b: { c: 2 } };
const target = {};
Object.assign(target, source);
target.b.c = 3;
// حالا source.b.c هم 3 شده چون کپی سطحی بود.
سوالات موجود در این آزمون در مورد متد Object.assign() هستن. مثلا ممکنه ازت بپرسم که اگه دو شیء با یک کلید مشترک رو با هم ترکیب کنیم، چه اتفاقی برای مقدار اون کلید میفته؟ یا اینکه بپرسم Object.assign() یک کپی عمیق ایجاد میکنه یا سطحی؟
با شرکت در این آزمون میتونی بفهمی که چقدر روی این متد تسلط داری و دقیقا کجاها نیاز به تمرین بیشتر داری. این کوییز بهت کمک میکنه تا دانش خودت رو تقویت کنی و نکات مهم رو فراموش نکنی.
شاید بپرسی خب مگه با عملگر spread ... نمیشه همین کار رو کرد؟ بله، میشه. ولی Object.assign() میتونه روی شیء هدف اصلی کار کنه و یک شیء جدید برنگردونه. جدول زیر یک مقایسه کوچک بین این دو روش رو نشون میده:
|
ویژگی |
Object.assign() |
Spread Syntax |
|---|---|---|
|
ایجاد شیء جدید |
اختیاری |
بله |
|
بازنویسی کلید |
بله |
بله |
|
کپی سطحی |
بله |
بله |
|
پشتیبانی مرورگر |
عالی |
عالی (از ES6 به بعد) |
آمادهای که دانش خودت رو در مورد Object.assign() محک بزنی؟ روی دکمه شروع کلیک کن و وارد این چالش جذاب شو.