ÛÚ©Û Ø§Ø² ØªÙØ§ÙتâÙØ§Û Ø§Ø³Ø§Ø³Û Ø¨ÛÙ Ø´ÛØ¡Ùا Ù Ù ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ(primitives) اÛ٠است Ú©Ù Ø´ÛØ¡Ùا âØªÙØ³Ø· Ù Ø±Ø¬Ø¹â Ø°Ø®ÛØ±Ù Ù Ú©Ù¾Û Ù ÛâØ´ÙÙØ¯Ø در ØØ§ÙÛ Ú©Ù Ù ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ Ù Ø§ÙÙØ¯ رشتÙâÙØ§Ø Ø§Ø¹Ø¯Ø§Ø¯Ø Ù ÙØ¯Ø§Ø±ÙØ§Û boolean Ù ØºÛØ±ÙØ ÙÙ ÛØ´Ù âØ¨Ù Ø¹ÙÙØ§Ù ÛÚ© Ù ÙØ¯Ø§Ø± Ú©ÙÛâ Ø°Ø®Ûر٠٠ÛâØ´ÙÙØ¯.
اگر ٠ا بداÙÛ٠ز٠اÙÛ Ú©Ù Ù ÙØ¯Ø§Ø±Û را Ú©Ù¾Û Ù ÛâÚ©ÙÛÙ ÚÙ Ø§ØªÙØ§ÙÛ Ù ÛâØ§ÙØªØ¯Ø اÛÙ Ù ÙØ¶Ùع را Ø¨ÙØªØ± Ù ØªÙØ¬Ù Ù ÛâØ´ÙÛÙ .
Ø¨ÛØ§ÛÛØ¯ با ÛÚ© Ù ÙØ¯Ø§Ø± اصÙÛ Ù Ø§ÙÙØ¯ Ø±Ø´ØªÙ Ø´Ø±ÙØ¹ Ú©ÙÛÙ .
اÛÙØ¬Ø§ Ù
ا ÛÚ© Ú©Ù¾Û Ø§Ø² message را درÙÙ phrase ÙØ±Ø§Ø± Ù
ÛâØ¯ÙÛÙ
:
let message = "Hello!";
let phrase = message;
در ÙØªÛج٠Ù
ا د٠Ù
ØªØºÛØ± Ù
ستÙ٠دارÛÙ
Ú©Ù ÙØ± کداÙ
رشتÙâÛ "Hello!" را Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙÙØ¯.
ÙØªÛج٠خÛÙÛ Ø¨Ø¯ÛÙÛ Ø§Ø³Øª ÙÙØ
Ø´ÛØ¡Ùا اÛÙÚ¯ÙÙÙ ÙÛØ³ØªÙد.
Ù ØªØºÛØ±Û Ú©Ù ÛÚ© Ø´ÛØ¡ Ø¨Ù Ø¢Ù ØªØ®ØµÛØµ داد٠شد٠باشد Ø®ÙØ¯ Ø´ÛØ¡ را Ø°Ø®ÛØ±Ù ÙÙ ÛâÚ©ÙØ¯Ø بÙÚ©Ù âØ¢Ø¯Ø±Ø³ آ٠در ØØ§ÙظÙâ Ø±Ø§ Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙØ¯. Ø¨Ù Ø¹Ø¨Ø§Ø±ØªÛ Ø¯Ûگر âÛÚ© Ù Ø±Ø¬Ø¹â Ø±Ø§ Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙÙØ¯.
Ø¨ÛØ§ÛÛØ¯ ب٠٠ثاÙÛ Ø§Ø² ÚÙÛÙ Ù ØªØºÛØ±Û Ùگا٠کÙÛÙ :
let user = {
name: "John"
};
اÛÙک٠در ÙØ§Ùع ÚÚ¯ÙÙÙ Ø°Ø®ÛØ±Ù Ù ÛâØ´ÙØ¯ را اÛÙØ¬Ø§ Ú¯ÙØªÛÙ :
Ø´ÛØ¡ در جاÛÛ Ø§Ø² ØØ§ÙØ¸Ù Ø°Ø®ÛØ±Ù شد٠است (سÙ
ت راست تصÙÛØ±)Ø Ø¯Ø± ØØ§ÙÛ Ú©Ù Ù
ØªØºÛØ± user (سÙ
ت ÚÙ¾) Ø¨Ù Ø´ÛØ¡ âØ±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯â.
Ù
ÛâØªÙØ§ÙÛÙ
ب٠Ù
ØªØºÛØ±Û Ú©Ù Ø´ÛØ¡Ø§Û را Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙØ¯Ø Ù
اÙÙØ¯ userØ Ø¨Ù Ø¹ÙÙØ§Ù ÛÚ© ÙØ±Ù کاغذ ک٠شاÙ
٠آدرس Ø´ÛØ¡ است Ùگا٠کÙÛÙ
.
زÙ
اÙÛ Ú©Ù Ù
ا با Ø´ÛØ¡ Ú©Ø§Ø±Û Ø§ÙØ¬Ø§Ù
Ù
ÛâØ¯ÙÛÙ
Ø Ø¨Ø±Ø§Û Ù
ثا٠ÛÚ© ÙÛÚÚ¯Û Ø±Ø§ Ù
ÛâÚ¯ÛØ±ÛÙ
user.nameØ Ù
ÙØªÙر Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ب٠آدرس Ùگا٠Ù
ÛâÚ©ÙØ¯ Ú©Ù ÚÙ ÚÛØ²Û درÙÙ Ø¢Ù ÙØ±Ø§Ø± دارد ٠عÙ
ÙÛØ§Øª را رÙÛ Ø´ÛØ¡ ÙØ§ÙØ¹Û Ø§ÙØ¬Ø§Ù
Ù
ÛâØ¯ÙØ¯.
ØØ§Ù دÙÛ٠اÙÙ ÛØª آ٠اÛÙØ¬Ø§ آ٠د٠است.
ز٠اÙÛ Ú©Ù ÛÚ© Ù ØªØºÛØ± ØØ§ÙÛ Ø´ÛØ¡ Ú©Ù¾Û Ù ÛâØ´ÙØ¯Ø ٠رجع Ø¢Ù Ú©Ù¾Û Ø´Ø¯ÙâØ§Ø³Øª ÙÙ Ø®ÙØ¯ Ø´ÛØ¡.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let user = { name: "John" };
let admin = user; // Ú©Ù¾Û Ø´Ø¯Ù Ù
رجع
ØØ§Ùا ٠ا Ø¯Ù Ù ØªØºÛØ± دارÛÙ Ú©Ù ÙØ± کدا٠ÛÚ© ٠رجع Ø¨Ù Ø´ÛØ¡ Ûکسا٠را Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙÙØ¯:
ÙÙ Ø§ÙØ·Ùر Ú©Ù Ù ÛâØ¨ÛÙÛØ¯Ø ÙÙÙØ² ÛÚ© Ø´ÛØ¡ ÙØ¬Ùد Ø¯Ø§Ø±Ø¯Ø Ø§Ù Ø§ ØØ§Ùا Ø¯Ù Ù ØªØºÛØ± دارÛÙ Ú©Ù Ø¨Ù Ø¢Ù Ø±Ø¬ÙØ¹ Ù ÛâÚ©ÙÙØ¯.
Ø¨Ø±Ø§Û Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø´ÛØ¡ ٠تغÛÛØ± Ù ØØªÙØ§Û Ø¢Ù Ù ÛâØªÙØ§ÙÛ٠از ÙØ± Ø¯Ù Ù ØªØºÛØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
let user = { name: 'John' };
let admin = user;
admin.name = 'Pete'; // "admin" تغÛÛØ± Ø¯Ø§Ø¯Ù Ø´Ø¯Ù ØªÙØ³Ø· Ù
رجع
alert(user.name); // 'Pete' :ÙÙ
ÙØ§Ø¨Ù Ù
Ø´Ø§ÙØ¯Ù ÙØ³ØªÙد "user" تغÛÛØ±Ø§Øª ØªÙØ³Ø· Ù
رجع
درست Ù
اÙÙØ¯ اÛ٠است Ú©Ù Ù
ا ÛÚ© Ú©Ù
د با د٠کÙÛØ¯ داشت٠باشÛÙ
٠با Ø§Ø³ØªÙØ§Ø¯Ù از ÛÚ©Û Ø§Ø² Ú©ÙÛØ¯Ùا (admin) آ٠را باز Ú©ÙÛÙ
٠درÙ٠آ٠تغÛÛØ±Ø§ØªÛ Ø§ÙØ¬Ø§Ù
دÙÛÙ
. Ø³Ù¾Ø³Ø Ø§Ú¯Ø± بعدا از Ú©ÙÛØ¯ دÛگر (user) Ø§Ø³ØªÙØ§Ø¯Ù کردÛÙ
Ø ÙÙÙØ² ÙÙ
Ú©Ù
د ÛکساÙÛ Ø±Ø§ باز کردÙâØ§ÛÙ
٠ب٠Ù
ØØªÙØ§Û ØªØºÛÛØ± Ø¯Ø§Ø¯Ù Ø´Ø¯Ù Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø±ÛÙ
.
Ù ÙØ§ÛØ³Ù ØªÙØ³Ø· ٠رجع
Ø¯Ù Ø´ÛØ¡ تÙÙØ§ در ØØ§ÙØªÛ Ú©Ù ÛÚ© Ø´ÛØ¡ ÛÚ©Ø³Ø§Ù Ø¨Ø§Ø´ÙØ¯ برابر ÙØ³ØªÙد.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ اÛÙØ¬Ø§ a Ù b ب٠ÛÚ© Ø´ÛØ¡ ÛÚ©Ø³Ø§Ù Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙÙØ¯Ø Ø¨ÙØ§Ø¨Ø±Ø§Û٠برابر ÙØ³ØªÙد:
let a = {};
let b = a; // Ú©Ù¾Û Ú©Ø±Ø¯Ù Ù
رجع
alert( a == b ); // true :ÙØ± د٠Ù
ØªØºÛØ± Ø¨Ù Ø´ÛØ¡ ÛÚ©Ø³Ø§Ù Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙÙØ¯ پس
alert( a === b ); // true
در کد پاÛÛÙ Ø¯Ù Ø´ÛØ¡ ٠ستÙ٠دارÛ٠٠با اÛÙÚ©Ù Ù Ø´Ø§Ø¨Ù Ø¨ÙØ¸Ø± Ù ÛâØ±Ø³ÙØ¯ ا٠ا برابر ÙÛØ³ØªÙد (ÙØ± د٠خاÙÛ ÙØ³ØªÙد):
let a = {};
let b = {}; // Ø¯Ù Ø´ÛØ¡ Ù
ستÙÙ
alert( a == b ); // false
Ø¨Ø±Ø§Û Ù
ÙØ§ÛسÙâÙØ§ÛÛ Ù
اÙÙØ¯ obj1 > obj2 ÛØ§ Ù
ÙØ§ÛØ³Ù Ø´ÛØ¡ با ÛÚ© Ù
ÙØ¯Ø§Ø± اصÙÛ obj == 5Ø Ø´ÛØ¡Ùا ب٠Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ ØªØ¨Ø¯ÛÙ Ù
ÛâØ´ÙÙØ¯. Ù
ا ÚÚ¯ÙÙÚ¯Û ØªØ¨Ø¯ÛÙ Ø´ÛØ¡Ùا را Ø¨Ù Ø²ÙØ¯Û Ù
Ø·Ø§ÙØ¹Ù Ù
ÛâÚ©ÙÛÙ
Ø Ø§Ù
ا اگر Ø¨Ø®ÙØ§ÙÛÙ
ØÙÛÙØª را بگÙÛÛÙ
Ø ÚÙÛ٠تبدÛÙâÙØ§ÛÛ Ø¨Ù ÙØ¯Ø±Øª ÙÛØ§Ø² Ù
ÛâØ´ÙÙØ¯ â Ø¢ÙÙØ§ Ù
عÙ
ÙÙØ§ ب٠عÙÙØ§Ù ÙØªÛجÙâÛ ÛÚ© Ø§Ø´ØªØ¨Ø§Ù Ø¨Ø±ÙØ§Ù
ÙâÙÙÛØ³Û Ø¸Ø§ÙØ± Ù
ÛâØ´ÙÙØ¯.
ÛÚ© Ø¹Ø§Ø±Ø¶Ù Ø¬Ø§ÙØ¨Û Ù
ÙÙ
Ø°Ø®ÛØ±Ù Ø´ÛØ¡Ùا ب٠عÙÙØ§Ù Ù
رجع اÛ٠است Ú©Ù Ø´ÛØ¡Ø§Û ک٠ب٠عÙÙØ§Ù const تعرÛ٠شد٠است Ù
ÛâØªÙØ§Ùد تغÛÛØ± Ø¯Ø§Ø¯Ù Ø´ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
const user = {
name: "John"
};
user.name = "Pete"; // (*)
alert(user.name); // Pete
Ø´Ø§ÛØ¯ Ø¨Ù ÙØ¸Ø± برسد ک٠خط (*) باعث Ø§Ø±ÙØ± Ø´ÙØ¯ اÙ
ا اÛÙØ·Ùر ÙÛØ³Øª. Ù
ÙØ¯Ø§Ø± user ثابت است Ù ÙÙ
ÛØ´Ù Ø¨Ø§ÛØ¯ Ø¨Ù Ø´ÛØ¡Ø§Û ÛÚ©Ø³Ø§Ù Ø±Ø¬ÙØ¹ Ú©ÙØ¯ اÙ
ا ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù Ø´ÛØ¡ Ø¨Ø±Ø§Û ØªØºÛÛØ± آزاد ÙØ³ØªÙد.
Ø¨Ù Ø¹Ø¨Ø§Ø±ØªÛ Ø¯ÛÚ¯Ø±Ø const user تÙÙØ§ اگر Ù
ا Ø¨Ø±Ø§Û ØªÙØ¸ÛÙ
user=... ØªÙØ§Ø´ Ú©ÙÛÙ
Ø§Ø±ÙØ± Ù
ÛâØ¯ÙØ¯.
با اÛÙ ØØ§Ù اگر ÙØ§Ùعا ÙÛØ§Ø² دارÛÙ Ú©Ù ÙÛÚÚ¯ÛâÙØ§Û Ø´ÛØ¡ را ثابت Ùگ٠دارÛÙ Ù ÛâØªÙØ§ÙÛ٠اÛ٠کار را Ø§ÙØ¬Ø§Ù دÙÛ٠ا٠ا با Ø§Ø³ØªÙØ§Ø¯Ù از Ù ØªØ¯ÙØ§Û Ú©Ø§Ù ÙØ§ Ù ØªÙØ§Ùت. ٠ا اÛÙ Ù ÙØ¶Ùع را در ÙØµÙ پرÚÙ âÙØ§Û ÙÛÚÚ¯Û Ù ØªÙØµÛÙâÚ©ÙÙØ¯ÙâÙØ§ ذکر کردÙâØ§ÛÙ .
Ú©Ù¾Û Ù Ø§Ø¯ØºØ§Ù Ú©Ø±Ø¯ÙØ Object.assign
پس Ú©Ù¾Û Ú©Ø±Ø¯Ù ÛÚ© Ù ØªØºÛØ± ØØ§ÙÛ Ø´ÛØ¡ باعث ساخت ÛÚ© ٠رجع اضاÙÛ Ø¨Ù ÙÙ Ø§Ù Ø´ÛØ¡ Ù ÛâØ´ÙØ¯.
ا٠ا اگر ٠ا ÙÛØ§Ø² داشت٠باشÛÙ Ú©Ù ÚÙØ¯ ÙØ³Ø®Ù از ÛÚ© Ø´ÛØ¡ بسازÛÙ Ú٠کار Ú©ÙÛÙ Ø
Ù ÛâØªÙØ§ÙÛÙ ÛÚ© Ø´ÛØ¡ Ø¬Ø¯ÛØ¯ بسازÛ٠٠ساختار Ø´ÛØ¡Ø§Û ک٠از ÙØ¨Ù Ù ÙØ¬Ùد است را با ØÙÙ٠زد٠بÛÙ ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù Ù Ú©Ù¾Û Ú©Ø±Ø¯Ù Ø¢ÙÙØ§ در Ø³Ø·Ø Ù ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛØ در Ø´ÛØ¡ Ø¬Ø¯ÛØ¯ Ú©Ù¾Û Ú©ÙÛÙ .
٠اÙÙØ¯ اÛ٠کد:
let user = {
name: "John",
age: 30
};
let clone = {}; // Ø´ÛØ¡ خاÙÛ Ø¬Ø¯ÛØ¯
// را درÙÙ Ø¢Ù Ú©Ù¾Û Ú©ÙÛÙ
user Ø¨ÛØ§ÛÛØ¯ تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§Û
for (let key in user) {
clone[key] = user[key];
}
// ØØ§Ù Ø´ÛØ¡ Ú©Ù¾Û Ø´Ø¯Ù ÛÚ© Ø´ÛØ¡ کاÙ
ÙØ§ Ù
ستÙ٠با Ù
ØØªÙØ§Û Ûکسا٠است
clone.name = "Pete"; // تغÛÛØ± داد٠دادÙâÛ Ø¯Ø±Ù٠آÙ
alert( user.name ); // است John ÙÙÙØ² در Ø´ÛØ¡ اصÙÛ Ø¨Ø±Ø§Ø¨Ø± با
ÙÙ ÚÙÛ٠٠ا Ù ÛâØªÙØ§ÙÛ٠از ٠تد Object.assign Ø¨Ø±Ø§Û Ø§Û٠کار Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ .
سÛÙØªÚ©Ø³ آ٠اÛÙÚ¯ÙÙ٠است:
Object.assign(dest, ...sources)
- اÙÙÛ٠آرگÙÙ
اÙ
destÙÙ Ø§Ù Ø´ÛØ¡ Ù ÙØµÙد است. - آرگÙÙ
اÙâÙØ§Û بعدÛ
src1, ..., srcN(٠٠ک٠است ÙØ± ØªØ¹Ø¯Ø§Ø¯Û Ø¨Ø§Ø´Ø¯) Ø´ÛØ¡Ùا Ù ÙØ¨Ø¹ ÙØ³ØªÙد. - اÛÙ Ù
تد ÙÛÚÚ¯ÛâÙØ§Û تÙ
اÙ
Ø´ÛØ¡Ùا Ù
ÙØ¨Ø¹
src1, ..., srcNرا درÙÙdestÚ©Ù¾Û Ù ÛâÚ©ÙØ¯. Ø¨Ù Ø¹Ø¨Ø§Ø±ØªÛ Ø¯ÛÚ¯Ø±Ø ÙÛÚÚ¯ÛâÙØ§Û ت٠ا٠آرگÙ٠اÙâÙØ§Û بعد از دÙÙ Û٠آرگÙÙ Ø§ÙØ درÙÙ Ø´ÛØ¡ اÙÙ Ú©Ù¾Û Ù ÛâØ´ÙÙØ¯. - Ù
تد صدازد٠شدÙ
destرا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ Ù ÛâØªÙØ§ÙÛ٠از اÛ٠٠تد Ø¨Ø±Ø§Û Ø§Ø¯ØºØ§Ù ÚÙØ¯ Ø´ÛØ¡ Ù Ø±ÛØ®ØªÙ Ø¢ÙÙØ§ درÙÙ ÛÚ© Ø´ÛØ¡ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
let user = { name: "John" };
let permissions1 = { canView: true };
let permissions2 = { canEdit: true };
// Ú©Ù¾Û Ù
ÛâÚ©ÙØ¯ user درÙÙ permissions2 Ù permissions1 تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§ را از
Object.assign(user, permissions1, permissions2);
<<<<<<< HEAD
// user = { name: "John", canView: true, canEdit: true } :ØØ§Ùا دارÛÙ
alert(user.name); // John
alert(user.canView); // true
alert(user.canEdit); // true
اگر ÙÛÚÚ¯Û Ú©Ù¾ÛâØ´Ø¯Ù Ø§Ø² ÙØ¨Ù ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ø¯ÙØ¨Ø§Ø±Ù Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ù ÛâØ´ÙØ¯:
let user = { name: "John" };
Object.assign(user, { name: "Pete" });
alert(user.name); // user = { name: "Pete" } :ØØ§Ùا دارÛÙ
ÙÙ
ÚÙÛÙ Ù
ÛâØªÙØ§ÙÛÙ
Ø¨Ø±Ø§Û Ú©Ù¾Û Ú©Ø±Ø¯ÙâÙØ§Û ساد٠از Object.assign Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
:
let user = {
name: "John",
age: 30
};
let clone = Object.assign({}, user);
alert(clone.name); // John
alert(clone.age); // 30
تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§Û user درÙÙ Ø´ÛØ¡ خاÙÛ Ú©Ù¾Û Ù Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ù
ÛâØ´ÙÙØ¯.
ÙÙ
ÚÙÛÙ Ù
ØªØ¯ÙØ§Û دÛÚ¯Ø±Û Ø¨Ø±Ø§Û Ú©Ù¾Û ÛÚ© Ø´ÛØ¡ ÙØ¬Ùد دارد Ù
اÙÙØ¯ Ø§Ø³ØªÙØ§Ø¯Ù کرد٠از سÛÙØªÚ©Ø³ spread clone = {...user} ک٠بعدا در اÛ٠آÙ
ÙØ²Ø´ Ù¾ÙØ´Ø´ داد٠Ù
ÛâØ´ÙØ¯.
Ú©Ù¾Û Ú©Ø±Ø¯Ù ØªÙ Ø¯Ø± تÙ
تا اÛÙØ¬Ø§ Ù
ا ÙØ±Ø¶ کردÛÙ
ک٠تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§Û user Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ ÙØ³ØªÙد. اÙ
ا ÙÛÚÚ¯Û âÙØ§ Ù
ÛâØªÙØ§ÙÙØ¯ Ø¨Ù Ø´ÛØ¡ÙØ§Û Ø¯Ûگر Ø±Ø¬ÙØ¹ Ú©ÙÙØ¯.
٠اÙÙØ¯ اÛ٠کد:
let user = {
name: "John",
sizes: {
height: 182,
width: 50
}
};
alert( user.sizes.height ); // 182
اÛÙØ¬Ø§ Ú©Ù¾Û Ú©Ø±Ø¯Ù clone.sizes = user.sizes کاÙÛ ÙÛØ³ØªØ ÚÙÙ user.sized ÛÚ© Ø´ÛØ¡ است Ù ØªÙØ³Ø· Ù
رجع Ú©Ù¾Û Ù
ÛâØ´ÙØ¯. پس clone Ù user Ø³Ø§ÛØ²ÙØ§Û ÛکساÙÛ Ø±Ø§ Ù
شترک Ù
ÛâØ´ÙÙØ¯:
٠ث٠اÛÙ:
let user = {
name: "John",
sizes: {
height: 182,
width: 50
}
};
let clone = Object.assign({}, user);
alert( user.sizes === clone.sizes ); // true :Ø´ÛØ¡ÙØ§Û Ûکسا٠پس
<<<<<<< HEAD
// Ø³Ø§ÛØ²ÙØ§Û Ù
شترک Ø¯Ø§Ø±ÙØ¯ clone Ù user
user.sizes.width = 60; // ÛÚ© ÙÛÚÚ¯Û Ø±Ø§ از ÛÚ© جا تغÛÛØ± دÙÛØ¯
alert(clone.sizes.width); // 60 :ÙØªÛج٠را از Ø¬Ø§Û Ø¯Ûگر ببÛÙÛØ¯
Ø¨Ø±Ø§Û Ø±ÙØ¹ اÛ٠اشکا٠٠Ù
Ø¬Ø¨ÙØ± کرد٠user Ù clone ب٠اÛÙÚ©Ù ÙØ§Ùعا Ù
جزا Ø¨Ø§Ø´ÙØ¯Ø Ù
ا Ø¨Ø§ÛØ¯ از ÛÚ© ØÙÙÙâÛ Ú©Ù¾ÛâÚ©Ø±Ø¯Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ú©Ù ÙØ± Ù
ÙØ¯Ø§Ø± user[key] را Ø¨Ø±Ø±Ø³Û Ù
ÛâÚ©ÙØ¯ ٠اگر Ø´ÛØ¡ Ø¨ÙØ¯Ø سپس ساختار آ٠را ÙÙ
Ú©Ù¾Û Ù
ÛâÚ©ÙØ¯. ب٠اÛ٠کار âÚ©Ù¾Ûâکرد٠عÙ
ÛÙâ ÛØ§ âÚ©Ù¾Ûâکرد٠ساختارÛâ Ù
ÛâÚ¯ÙÛÙØ¯. ÛÚ© Ù
تد structuredClone ÙØ¬Ùد دارد Ú©Ù Ú©Ù¾Ûâکرد٠عÙ
Û٠را Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ù
ÛâÚ©ÙØ¯.
٠تد structuredClone
ÙØ±Ø§Ø®ÙاÙÛ structuredClone(object) Ø´ÛØ¡ object با تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§Û ØªÙØ¯Ø±ØªÙ را Ú©Ù¾Û Ù
ÛâÚ©ÙØ¯.
اÛÙØ¬Ø§ ÙØ´Ø§Ù Ù ÛâØ¯ÙÛÙ ÚÚ¯ÙÙÙ Ù ÛâØªÙØ§ÙÛ٠از آ٠در Ù Ø«Ø§Ù Ø®ÙØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
let user = {
name: "John",
sizes: {
height: 182,
width: 50
}
};
let clone = structuredClone(user);
alert( user.sizes === clone.sizes ); // false ØØ´ÛØ¡ÙØ§Û Ù
ØªÙØ§Ùت
// اکÙÙ٠کاÙ
ÙØ§ ÙØ§Ù
رتبط ÙØ³ØªÙد clone Ù user Ø´ÛØ¡ÙاÛ
user.sizes.width = 60; // ÙÛÚÚ¯ÛâØ§Û Ø±Ø§ از جاÛÛ ØªØºÛÛØ± دÙÛØ¯
alert(clone.sizes.width); // 50 ØÙ
رتبط ÙÛØ³ØªÙد
Ù
تد structuredClone Ù
ÛâØªÙØ§Ùد اکثر اÙÙØ§Ø¹ داد٠Ù
اÙÙØ¯ Ø´ÛØ¡ÙØ§Ø Ø¢Ø±Ø§ÛÙâÙØ§ Ù Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ Ø±Ø§ Ú©Ù¾Û Ú©ÙØ¯.
اÛ٠٠تد ÙÙ ÚÙÛ٠٠رجعâÙØ§Û Ø¯Ø§ÛØ±ÙâØ§Û Ø±Ø§ ÙÙ Ù¾ÙØ´Ø´ Ù ÛâØ¯ÙØ¯Ø ز٠اÙÛ Ú©Ù ÛÚ© ÙÛÚÚ¯Û Ø´ÛØ¡ Ø¨Ù Ø®ÙØ¯ Ø´ÛØ¡ Ø±Ø¬ÙØ¹ Ù ÛâÚ©ÙØ¯ (Ø¨Ù ØµÙØ±Øª ٠ستÙÛÙ ÛØ§ از طرÛÙ ÛÚ© Ø²ÙØ¬Ûر٠از ٠رجعâÙØ§).
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let user = {};
// :Ø¨ÛØ§ÛÛØ¯ ÛÚ© Ù
رجع Ø¯Ø§ÛØ±ÙâØ§Û Ø¨Ø³Ø§Ø²ÛÙ
// Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯ user Ø¨Ù Ø®ÙØ¯ user.me
user.me = user;
let clone = structuredClone(user);
alert(clone.me === clone); // true
ÙÙ
Ø§ÙØ·Ùر Ú©Ù Ù
ÛâØªÙØ§ÙÛØ¯ ببÛÙÛØ¯Ø clone.me ب٠clone Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯ Ù٠ب٠user! پس Ù
رجع Ø¯Ø§ÛØ±ÙâØ§Û ÙÙ
Ø¨Ù Ø¯Ø±Ø³ØªÛ Ú©Ù¾Û Ø´Ø¯Ù.
اگرÚÙØ Ù
ÙØ§Ø±Ø¯Û ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯ Ú©Ù structuredClone Ù
ÙÙÙÛØªâØ¢Ù
ÛØ² ÙÛØ³Øª.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ ز٠اÙÛ Ú©Ù ÛÚ© Ø´ÛØ¡ ÙÛÚÚ¯Û ØªØ§Ø¨Ø¹ داشت٠باشد:
// Ø§Ø±ÙØ±
structuredClone({
f: function() {}
});
ÙÛÚÚ¯ÛâÙØ§Û تابع Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙÙ ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø¯ÛØ±Ûت ÚÙÛÙ Ù ÙØ§Ø±Ø¯Û ٠ا Ø´Ø§ÛØ¯ ÙÛØ§Ø² داشت٠باشÛ٠ک٠از ØªØ±Ú©ÛØ¨Û از Ù ØªØ¯ÙØ§Û Ú©Ù¾ÛâØ³Ø§Ø²Û Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ Ø Ú©Ø¯ شخصÛâØ³Ø§Ø²Û Ø´Ø¯Ù Ø¨ÙÙÛØ³ÛÙ ÛØ§ Ø¨Ø±Ø§Û Ø§ÛÙÚ©Ù ÚØ±Ø® را Ø¯ÙØ¨Ø§Ø±Ù ÙØ³Ø§Ø²ÛÙ Ø ÛÚ© Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ù ÙØ¬Ùد را Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ Ø Ø¨Ø±Ø§Û Ù Ø«Ø§Ù _.cloneDeep(obj) از کتابخاÙÙ lodash Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت.
Ø®ÙØ§ØµÙ
Ø´ÛØ¡Ùا ØªÙØ³Ø· ٠رجع ØªØ®ØµÛØµ Ø¯Ø§Ø¯Ù Ù Ú©Ù¾Û Ù ÛâØ´ÙÙØ¯. Ø¨Ù Ø¹Ø¨Ø§Ø±ØªÛ Ø¯ÛÚ¯Ø±Ø ÛÚ© Ù ØªØºÛØ± âÙ ÙØ¯Ø§Ø± ØØ§ÙÛ Ø´ÛØ¡â را Ø¯Ø®ÛØ±Ù ÙÙ ÛâÚ©ÙØ¯Ø بÙÚ©Ù ÛÚ© â٠رجعâ (آدرس درÙÙ ØØ§ÙظÙ) را ب٠عÙÙØ§Ù Ù ÙØ¯Ø§Ø± Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙØ¯. پس Ú©Ù¾Û Ú©Ø±Ø¯Ù ÚÙÛÙ Ù ØªØºÛØ±Û ÛØ§ رد کرد٠آ٠ب٠عÙÙØ§Ù ÛÚ© آرگÙ٠ا٠تابع آ٠٠رجع را Ú©Ù¾Û Ù ÛâÚ©ÙØ¯ ÙÙ Ø®ÙØ¯ Ø´ÛØ¡ را.
ت٠ا٠ع٠ÙÛØ§ØªâÙØ§ (٠اÙÙØ¯ اضاÙÙ/ک٠کرد٠ÙÛÚÚ¯ÛâÙØ§) از طرÛ٠٠رجع Ú©Ù¾ÛâØ´Ø¯Ù Ø±ÙÛ Ø´ÛØ¡ ÛÚ©Ø³Ø§Ù Ø§ÙØ¬Ø§Ù Ù ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ø§ÛÙÚ©Ù ÛÚ© âÚ©Ù¾Û ÙØ§ÙعÛâ (ÛÚ© Ù
شبÙ) را بسازÛÙ
Ù
ÛâØªÙØ§ÙÛÙ
از Object.assign Ø¨Ø±Ø§Û âÚ©Ù¾ÛâÙØ§Û سطØÛâ (Ø´ÛØ¡ÙØ§Û ØªÙ Ø¯Ø± ØªÙ ØªÙØ³Ø· Ù
رجع Ú©Ù¾Û Ù
ÛâØ´ÙÙØ¯) ÛØ§ از ÛÚ© تابع «کپÛâØ³Ø§Ø²Û Ø¹Ù
ÛÙ» structuredClone ÛØ§ ÛÚ© Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ø´Ø®ØµÛâØ³Ø§Ø²Û Ø´Ø¯Ù Ù
اÙÙØ¯ _.cloneDeep(obj) Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)