Ø£ØØ¯ Ø§ÙØ§Ø®ØªÙØ§ÙØ§Øª Ø§ÙØ£Ø³Ø§Ø³ÙØ© بÙ٠اÙÙØ§Ø¦Ùات ÙØ§ÙÙÙÙ Ø§ÙØ£Ø³Ø§Ø³ÙØ© Ù٠أ٠اÙÙØ§Ø¦Ùات ØªØ®Ø²Ù ÙØªÙسخ âØ¶Ù ÙÙÙØ§â ÙØ¨Ø§ÙÙ ÙØ§Ø¨ÙØ ÙØªÙ ÙØ³Ø® اÙÙÙÙ Ø§ÙØ£Ø³Ø§Ø³ÙØ© باÙÙØ§Ù Ù.
ÙØ°Ø§ سÙ٠اÙÙÙ٠إذا ÙØ¸Ø±Ùا ÙÙÙÙØ§Ù ØªØØª Ø§ÙØºØ·Ø§Ø¡ Ù٠ا ÙØØ¯Ø« Ø¹ÙØ¯ ÙØ³Ø® اÙÙÙÙ Ø©.
ÙÙØ¨Ø¯Ø£ باÙÙÙÙ Ø© Ø§ÙØ£Ø³Ø§Ø³ÙØ©Ø Ù Ø«Ù Ø§ÙØ³ÙØ³ÙØ©.
ÙÙØ§ ÙØ¶Ø¹ ÙØ³Ø®Ø© Ù
Ù message ÙÙ phrase:
let message = "Hello!";
let phrase = message;
ÙØÙ Ø§ÙØ¢Ù ÙØ¯ÙÙØ§ Ù
ØªØºÙØ±Ø§Ù Ù
ستÙÙØ§ÙØ ÙØ®Ø²Ù ÙÙ Ù
ÙÙÙ
ا Ø§ÙØ³ÙØ³Ø§ÙØ© "Hello!".
ÙØªÙجة ÙØ§Ø¶ØØ© Ø¬Ø¯ÙØ§Ø Ø£ÙÙØ³ ÙØ°ÙÙØ
اÙÙØ§Ø¦Ùات ÙÙØ³Øª ÙØ°ÙÙ.
ÙØ®Ø²Ù اÙÙ ØªØºÙØ± Ø§ÙØ°Ù ÙØ´Ùر Ø¥ÙÙ ÙØ§Ø¦Ù ÙÙØ³ اÙÙØ§Ø¦Ù ÙÙØ³ÙØ ÙÙÙÙ âØ¹ÙÙØ§ÙÙ ÙÙ Ø§ÙØ°Ø§Ùرةâ â Ø¨Ø¹Ø¨Ø§Ø±Ø© أخر٠âÙ Ø±Ø¬Ø¹ÙØ§â ÙÙ.
ÙÙÙÙÙ ÙØ¸Ø±Ø© عÙ٠٠ثا٠ÙÙ ØªØºÙØ± Ù Ù ÙØ°Ø§ اÙÙÙØ¹:
let user = {
name: "John",
};
ÙÙÙØ§ ÙÙÙ ÙØªÙ تخزÙÙÙ ÙÙ Ø§ÙØ°Ø§Ùرة:
ÙØªÙ
تخزÙ٠اÙÙØ§Ø¦Ù ÙÙ Ù
ÙØ§Ù Ù
ا ÙÙ Ø§ÙØ°Ø§Ùرة (عÙ٠اÙÙÙ
ÙÙ Ù
Ù Ø§ÙØµÙرة)Ø ÙÙ ØÙÙ ÙØØªÙ٠اÙÙ
ØªØºÙØ± user (عÙ٠اÙÙØ³Ø§Ø±) عÙÙ âÙ
Ø±Ø¬Ø¹â Ø¥ÙÙ ÙØ°Ø§ اÙÙ
ÙØ§Ù.
ÙÙ
ÙÙÙØ§ Ø§ÙØªÙÙÙØ± ÙÙ Ù
ØªØºÙØ± اÙÙØ§Ø¦ÙØ Ù
ث٠userØ ÙÙØ±ÙØ© ÙØ±Ù Ø¨ÙØ§ عÙÙØ§Ù اÙÙØ§Ø¦Ù.
Ø¹ÙØ¯Ù
ا ÙÙÙÙ
بإجراء أ٠عÙ
ÙÙØ§Øª عÙ٠اÙÙØ§Ø¦ÙØ Ù
ث٠اÙÙØµÙ٠إÙÙ Ø®Ø§ØµÙØ© user.nameØ ÙÙÙÙ
Ù
ØØ±Ù JavaScript باÙÙØ¸Ø± Ø¥ÙÙ Ù
ا ÙÙØ¬Ø¯ Ù٠ذÙÙ Ø§ÙØ¹ÙÙØ§Ù ÙÙÙÙØ° Ø§ÙØ¹Ù
ÙÙØ© عÙ٠اÙÙØ§Ø¦Ù اÙÙØ¹ÙÙ.
ÙØ§ÙØ¢Ù ÙÙØ§ ÙÙ Ø§ÙØ³Ø¨Ø¨ Ù٠أÙÙ ÙØ© ÙØ°Ø§ Ø§ÙØ£Ù ر.
Ø¹ÙØ¯ ÙØ³Ø® Ù ØªØºÙØ± اÙÙØ§Ø¦Ù Ø ÙØªÙ ÙØ³Ø® اÙ٠رجع Ø ÙÙÙ٠اÙÙØ§Ø¦Ù ÙÙØ³Ù ÙØ§ ÙØªÙ Ø§Ø³ØªÙØ³Ø§Ø®Ù.
عÙ٠سبÙ٠اÙ٠ثاÙ:
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) ÙÙ ÙÙØª ÙØ§ØÙØ ÙÙØÙ ÙØ§ ÙÙØªØ سÙÙ ÙÙØ³ Ø§ÙØ®Ø²Ø§ÙØ© ÙÙÙ
ÙÙÙØ§ اÙÙØµÙ٠إÙ٠اÙÙ
ØØªÙÙØ§Øª اÙÙ
ØºÙØ±Ø©.
اÙÙ ÙØ§Ø±ÙØ© باÙ٠ؤشرات
Two objects are equal only if they are the same object.
For instance, here a and b reference the same object, thus they are equal:
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Ø ÙØªÙ
تØÙÙ٠اÙÙØ§Ø¦Ùات Ø¥ÙÙ ÙÙÙ
Ø£ÙÙÙØ©. Ø³ÙØ¯Ø±Ø³ ÙÙÙÙØ© عÙ
٠تØÙÙÙØ§Øª اÙÙØ§Ø¦Ùات ÙØ±ÙØ¨ÙØ§ Ø¬Ø¯ÙØ§Ø ÙÙÙÙ ÙÙÙÙ Ø§ÙØÙÙÙØ©Ø ØªØØªØ§Ø¬ ÙØ°Ù اÙÙ
ÙØ§Ø±Ùات ÙØ§Ø¯Ø±Ùا Ø¬Ø¯ÙØ§ â Ø¹Ø§Ø¯Ø© Ù
ا ØªØ¸ÙØ± ÙØªÙجة خطأ ÙÙ Ø§ÙØ¨Ø±Ù
جة.
Ø§Ø³ØªÙØ³Ø§Ø® ÙØ¯Ù Ø¬Ø 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 ÙØ°ÙÙ.
The syntax is:
Object.assign(dest, [src1, src2, src3...])
- اÙÙ
عاÙ
Ù Ø§ÙØ£ÙÙ
destÙ٠اÙÙØ§Ø¦Ù اÙ٠راد. - باÙ٠اÙÙ
عاÙ
ÙØ§Øª
src1, ..., srcN(ÙÙ Ù٠أ٠تÙÙ٠أ٠عدد) Ù٠اÙ٠صادر اÙ٠راد ÙØ³Ø®Ùا. - تÙÙÙ
Ø¨ÙØ³Ø® Ø®ÙØ§Øµ اÙÙ
صادر
src1, ..., srcNØ¥Ù٠اÙÙØ¯Ùdest. بÙÙ٠ات Ø£Ø®Ø±Ù ÙØªÙ ÙØ³Ø® Ø§ÙØ®Ùاص Ù Ù Ù٠اÙÙ Ø¹Ø§Ù ÙØ§Øª Ø¨Ø¯Ø¡ÙØ§ Ù Ù Ø§ÙØ«Ø§ÙÙ ÙÙØªÙ ÙØ¶Ø¹Ùا ÙÙ Ø§ÙØ£ÙÙ. - ÙØªØ±Ø¬Ø¹
dest.
Ù Ø«ÙÙØ§ ÙÙ ÙÙÙØ§ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ ÙØ¯Ù ج Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙØ§Ø¦Ùات ÙÙ ÙØ§Ø¦Ù ÙØ§ØØ¯:
let user = { name: "John" };
let permissions1 = { canView: true };
let permissions2 = { canEdit: true };
// ÙØ³Ø® ÙÙ Ø§ÙØ®Ùاص Ù
Ù permissions1 Ù permissions2 Ø¥ÙÙ user
Object.assign(user, permissions1, permissions2);
// now user = { name: "John", canView: true, canEdit: true }
إذا ÙØ§Ùت Ø§ÙØ®Ø§ØµÙØ© Ù ÙØ¬Ùدة ÙØªÙ استبداÙÙØ§:
let user = { name: "John" };
Object.assign(user, { name: "Pete" });
alert(user.name); // now user = { name: "Pete" }
Ø¥ÙØ¶Ùا ÙÙ
ÙÙÙØ§ استخداÙ
Object.assign ÙØ§Ø³ØªØ¨Ø¯Ø§Ù Ø§ÙØÙÙØ© Ø§ÙØªÙØ±Ø§Ø±ÙØ© for..in Ù٠اÙÙØ³Ø® Ø§ÙØ¨Ø³ÙØ·:
let user = {
name: "John",
age: 30
};
let clone = Object.assign({}, user);
ØªÙØ³Ø® ÙÙ Ø§ÙØ®Ùاص Ù
Ù user Ø¥ÙÙ ÙØ§Ø¦Ù ÙØ§Ø±Øº ÙØªØ±Ø¬Ø¹Ù.
اÙÙØ³Ø® اÙ٠تداخÙ
ÙÙØ§Ù Ø£ÙØ¶Ùا Ø·Ø±Ù Ø£Ø®Ø±Ù ÙØ§Ø³ØªÙساخ ÙØ§Ø¦ÙØ Ø¹Ù٠سبÙ٠اÙÙ
ثا٠باستخداÙ
spread syntax clone = {...user}Ø ÙØ§ÙØªÙ Ø³ÙØªÙ
ØªØºØ·ÙØªÙا ÙÙ ÙÙØª ÙØ§ØÙ ÙÙ Ø§ÙØ¨Ø±ÙاÙ
ج Ø§ÙØªØ¹ÙÙÙ
Ù.
اÙÙØ³Ø® Ø§ÙØ´Ø§Ù Ù
Ù Ø«Ù ÙØ°Ø§:
let user = {
name: "John",
sizes: {
height: 182,
width: 50,
},
};
alert(user.sizes.height); // 182
Ø§ÙØ¢Ù ÙÙØ³ ÙØ§ÙÙÙØ§ ÙØ³Ø® clone.sizes = user.sizes ÙØ£Ù user.sizes ÙÙ ÙØ§Ø¦Ù ÙØ³ÙتÙ
ÙØ³Ø® اÙÙ
ؤشر ÙÙÙÙÙ clone Ù user ÙÙÙ
ا ÙÙØ³ Ø§ÙØ®Ø§ØµÙØ© sizes:
Ù Ø«Ù ÙØ°Ø§:
let user = {
name: "John",
sizes: {
height: 182,
width: 50,
},
};
let clone = Object.assign({}, user);
alert(user.sizes === clone.sizes); // true, ÙÙØ³ اÙÙØ§Ø¦Ù
// user Ù clone ÙØªØ´Ø§Ø±Ùا٠sizes
user.sizes.width++; // تغÙÙØ± Ø§ÙØ®Ø§ØµÙØ© Ù
Ù Ù
ÙØ§Ù
alert(clone.sizes.width); // 51, ÙØ¬Ø¹Ù Ø§ÙØªØºÙÙØ± Ù
ئ٠Ù٠اÙÙ
ÙØ§Ù Ø§ÙØ¢Ø®Ø±
ÙØÙ ÙØ°Ù اÙÙ
Ø´ÙÙØ©Ø ÙØ¬Ø¨ عÙÙÙØ§ استخداÙ
ØÙÙØ© ÙØ³Ø® ØªÙØØµ ÙÙ ÙÙÙ
Ø© ÙÙ user[key] ÙØ¥Ø°Ø§ ÙØ§Ùت ÙØ§Ø¦ÙÙØ§Ø ÙØ¥ÙÙ ÙØªÙ
ØªÙØ±Ø§Ø± ÙÙÙÙÙ Ø£ÙØ¶Ùا. ÙÙØ³Ù
٠ذÙÙ âÙØ³Ø®Ùا عÙ
ÙÙÙØ§â.
ÙÙ ÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù Ø§ÙØªÙرار ÙØªÙÙÙØ° ÙØ³Ø®Ø© ع٠ÙÙØ©Ø Ø£Ù ÙÙ Ù٠استخدا٠تÙÙÙØ° Ù ÙØ¬Ùد ÙØ¹Ø¯Ù اختراع Ø§ÙØ¹Ø¬ÙØ©Ø Ø¹Ù٠سبÙ٠اÙ٠ثا٠_.cloneDeep(obj) Ù Ù Ù ÙØªØ¨Ø© JavaScript lodash.
آثار Ø¬Ø§ÙØ¨ÙØ© Ù
ÙÙ
Ø© ÙØªØ®Ø²Ù٠اÙÙØ§Ø¦Ùات ÙÙ
راجع Ù٠أÙÙ ÙÙ
Ù٠تعدÙÙ ÙØ§Ø¦Ù Ù
عر٠ب٠const.
عÙ٠سبÙ٠اÙ٠ثاÙ:
const user = {
name: "John"
};
user.name = "Pete"; // (*)
alert(user.name); // Pete
ÙØ¯ ÙØ¨Ø¯Ù Ø£Ù Ø§ÙØ³Ø·Ø± (*) Ø³ÙØªØ³Ø¨Ø¨ ÙÙ ØØ¯ÙØ« Ø®Ø·Ø£Ø ÙÙÙÙ ÙØ§ ÙØØ¯Ø« خطأ. ÙÙÙ
Ø© user Ø«Ø§Ø¨ØªØ©Ø ÙØ¬Ø¨ Ø£Ù ÙØ´Ùر دائÙ
ÙØ§ Ø¥ÙÙ ÙÙØ³ اÙÙØ§Ø¦ÙØ ÙÙÙÙ ÙÙ
Ù٠تغÙÙØ± خصائص ÙØ°Ø§ اÙÙØ§Ø¦Ù.
بÙ
عÙÙ Ø¢Ø®Ø±Ø ÙØªÙ
إصدار خطأ Ø¹ÙØ¯ استخداÙ
const user ÙÙØ· إذا ØØ§ÙÙÙØ§ تعÙÙÙ user=... ÙÙÙ.
Ù٠ع ذÙÙØ إذا ÙÙØ§ Ø¨ØØ§Ø¬Ø© ÙØ¹ÙÙØ§ Ø¥Ù٠جع٠خصائص اÙÙØ§Ø¦Ù Ø«Ø§Ø¨ØªØ©Ø Ù٠٠اÙÙ Ù Ù٠ذÙ٠باستخدا٠طر٠٠ختÙÙØ© ØªÙ Ø§Ù ÙØ§. Ø³ÙØ°Ùر ذÙÙ Ù٠اÙÙØµÙ Ø±Ø§ÙØ§Øª Ø§ÙØ®ØµØ§Ø¦Øµ Ù ÙØ§ØµÙØ§ØªÙØ§.
Ù ÙØ®Øµ
اÙÙØ§Ø¦Ùات تت٠تعÙÙÙÙØ§ ÙÙØ³Ø®Ùا باÙ٠رجع. ÙØ¨Ù عÙÙ Ø¢Ø®Ø±Ø ÙØ®Ø²Ù اÙÙ ØªØºÙØ± ÙÙØ³ âÙÙÙ Ø© اÙÙØ§Ø¦Ùâ ÙÙÙÙ â٠رجعâ (عÙÙØ§Ù ÙÙ Ø§ÙØ°Ø§Ùرة) ÙÙÙÙÙ Ø©. ÙØ°ÙÙØ Ø¹ÙØ¯ ÙØ³Ø® ÙØ°Ø§ اÙÙ ØªØºÙØ± Ø£Ù ØªÙ Ø±ÙØ±Ù ÙÙØ³ÙØ· ÙØ¯Ø§ÙØ©Ø ÙØªÙ ÙØ³Ø® ÙØ°Ø§ اÙÙ Ø±Ø¬Ø¹Ø ÙÙÙØ³ اÙÙØ§Ø¦Ù ÙÙØ³Ù.
ÙÙ Ø§ÙØ¹Ù ÙÙØ§Øª Ø§ÙØªÙ ØªØªÙ Ø¨ÙØ§Ø³Ø·Ø© اÙÙØ³Ø®Ø© (Ù Ø«Ù Ø¥Ø¶Ø§ÙØ© ÙØØ°Ù Ø§ÙØ®Ùاص) ØªØØ¯Ø« عÙÙ ÙÙØ³ اÙÙØ§Ø¦Ù.
ÙØ¹Ù
Ù ÙØ³Ø®Ø© ØÙÙÙÙØ© ÙÙ
ÙÙÙØ§ استخداÙ
Object.assign ÙÙ
ا ÙØ³Ù
Ù âshallow copyâ (اÙÙØ§Ø¦Ùات Ø§ÙØ¯Ø§Ø®ÙÙØ© ØªÙØ³Ø® باÙÙ
ؤشر) Ø£Ù Ø¯Ø§ÙØ© âdeep cloningâ Ù
ث٠_.cloneDeep(obj).
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)