ÙÛÚÚ¯Û "prototype" Ø¨Ù Ø·ÙØ± Ú¯Ø³ØªØ±Ø¯Ù ØªÙØ³Ø· ÙØ³ØªÙ Ø®ÙØ¯ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯. تÙ
اÙ
تابعâÙØ§Û Ø³Ø§Ø²ÙØ¯Ù درÙÙâØ³Ø§Ø®Øª از Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙÙØ¯.
در ابتدا Ø¨Ù Ø¬Ø²Ø¦ÛØ§Øª Ù ÛâپردازÛ٠٠سپس ÚÚ¯ÙÙÚ¯Û Ø§Ø³ØªÙØ§Ø¯Ù کرد٠از Ø¢Ù Ø¨Ø±Ø§Û Ø§Ø¶Ø§ÙÙ Ú©Ø±Ø¯Ù ÙØ§Ø¨ÙÛØªâÙØ§Û Ø¬Ø¯ÛØ¯ Ø¨Ù Ø´ÛØ¡ÙØ§Û Ø¯Ø±ÙÙâØ³Ø§Ø®Øª را Ø¨Ø±Ø±Ø³Û Ù ÛâÚ©ÙÛÙ .
ÙÛÚÚ¯Û Object.prototype
ÙØ±Ø¶ Ú©ÙÛ٠٠ا ÛÚ© Ø´ÛØ¡ خاÙÛ Ø±Ø§ Ø®Ø±ÙØ¬Û Ù ÛâÚ¯ÛØ±ÛÙ :
let obj = {};
alert( obj ); // "[object Object]" ?
Ú©Ø¯Û Ú©Ù Ø±Ø´ØªÙ "[object Object]" را Ø§ÛØ¬Ø§Ø¯ Ù
ÛâÚ©ÙØ¯ Ú©Ø¬Ø§Ø³ØªØ Ø§Û٠کد ÛÚ© Ù
تد toString درÙÙâØ³Ø§Ø®Øª است اÙ
ا Ú©Ø¬Ø§Ø³ØªØ obj خاÙÛ Ø§Ø³Øª!
â¦Ø§Ù
ا ÙÙ
اد Ú©ÙØªØ§Ù obj = {} با obj = new Object() ÛÚ©Ø³Ø§Ù Ø§Ø³ØªØ Ú©Ù Object ÛÚ© تابع Ø³Ø§Ø²ÙØ¯Ù درÙÙâØ³Ø§Ø®Øª Ø´ÛØ¡ Ø§Ø³ØªØ Ú©Ù Ø¯Ø§Ø±Ø§Û prototype است ک٠ب٠ÛÚ© Ø´ÛØ¡ Ø¨Ø³ÛØ§Ø± بزرگ ØØ§ÙÛ toString Ù Ù
ØªØ¯ÙØ§Û دÛگر Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯.
اÛÙØ¬Ø§ Ù ÛâØ¨ÛÙÛÙ Ú©Ù ÚÙ Ø§ØªÙØ§ÙÛ Ø¯Ø± ØØ§Ù رخ داد٠است:
زÙ
اÙÛ Ú©Ù new Object() ÙØ±Ø§Ø®ÙاÙÛ Ø´ÙØ¯ (ÛØ§ ÛÚ© Ø´ÛØ¡ ÙÛØªØ±Ø§Ù {...} ساخت٠Ù
ÛâØ´ÙØ¯)Ø Ø¨Ø§ ØªÙØ¬Ù Ø¨Ù ÙØ§ÙÙÙÛ Ú©Ù Ù
ا در ÙØµÙ ÙØ¨ÙÛ Ø¯Ø±Ø¨Ø§Ø±Ù Ø¢Ù ØµØØ¨Øª کردÛÙ
Ø [[Prototype]] آ٠در Object.prototype ÙØ±Ø§Ø± داد٠Ù
ÛâØ´ÙØ¯:
سپس زÙ
اÙÛ Ú©Ù obj.toString() ÙØ±Ø§Ø®ÙاÙÛ Ù
ÛâØ´ÙØ¯Ø اÛÙ Ù
تد از Object.prototype Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯.
Ù ÛâØªÙØ§ÙÛ٠آ٠را ب٠اÛÙ ØµÙØ±Øª Ø¨Ø±Ø±Ø³Û Ú©ÙÛÙ :
let obj = {};
alert(obj.__proto__ === Object.prototype); // true
alert(obj.toString === obj.__proto__.toString); //true
alert(obj.toString === Object.prototype.toString); //true
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ Ú©Ù [[Prototype]] دÛÚ¯Ø±Û Ø¯Ø± Ø²ÙØ¬ÛØ±Ù Ø¨Ø§ÙØ§Û Object.prototype ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯:
alert(Object.prototype.__proto__); // null
دÛگر Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û درÙÙâØ³Ø§Ø®Øª
Ø´ÛØ¡ÙØ§Û Ø¯Ûگر درÙÙâØ³Ø§Ø®Øª Ù
اÙÙØ¯ ArrayØ DateØ Function ٠بÙÛÙ ÙÙ
Ù
ØªØ¯ÙØ§ÛÛ Ø¯Ø±ÙÙ Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§ Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙÙØ¯.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ زÙ
اÙÛ Ú©Ù Ù
ا آراÛÙ [1, 2, 3] را Ù
ÛâØ³Ø§Ø²ÛÙ
Ø Ø³Ø§Ø²ÙØ¯Ù new Array() Ø¨Ù ØµÙØ±Øª درÙÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯. پس Array.prototype Ù¾Ø±ÙØªÙتاÛÙ¾ Ø¢Ù Ù
ÛâØ´ÙØ¯ Ù Ù
ØªØ¯ÙØ§ را ÙØ±Ø§ÙÙ
Ù
ÛâÚ©ÙØ¯. اÛ٠کار Ø¨Ø±Ø§Û ØØ§Ùظ٠خÛÙÛ Ú©Ø§Ø±Ø¢Ù
د است.
با ØªÙØ¬Ù Ø¨Ù Ø®ØµÙØµÛات Ø²Ø¨Ø§ÙØ تÙ
اÙ
Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Ø Object.prototype را Ø¨Ø§ÙØ§Û Ø®ÙØ¯ Ø¯Ø§Ø±ÙØ¯. ب٠ÙÙ
Û٠دÙÛ٠است Ú©Ù Ø¨Ø¹Ø¶Û Ø§ÙØ±Ø§Ø¯ Ù
ÛâÚ¯ÙÛÙØ¯ «ÙÙ
Ù ÚÛØ² از Ø´ÛØ¡Ùا Ø§Ø±Ø«âØ¨Ø±Û Ù
ÛâÚ©ÙÙØ¯Â».
اÛÙØ¬Ø§ ÛÚ© تصÙÛØ± Ú©ÙÛ Ø¯Ø§Ø±ÛÙ (Ø¨Ø±Ø§Û 3 Ø³Ø§Ø²ÙØ¯Ù درÙÙâØ³Ø§Ø®Øª تا جا Ø´ÙØ¯):
Ø¨ÛØ§ÛÛØ¯ Ø¨Ù ØµÙØ±Øª Ø¯Ø³ØªÛ Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§ را Ø¨Ø±Ø±Ø³Û Ú©ÙÛÙ :
let arr = [1, 2, 3];
// Ø§Ø±Ø«âØ¨Ø±Û Ù
ÛâÚ©ÙØ¯Ø Array.prototype Ø¢ÛØ§ از
alert( arr.__proto__ === Array.prototype ); // true
// ÚØ·ÙØ±Ø Object.prototype سپس از
alert( arr.__proto__.__proto__ === Object.prototype ); // true
// ÙØ±Ø§Ø± دارد null ٠در Ø¨Ø§ÙØ§
alert( arr.__proto__.__proto__.__proto__ ); // null
Ø¨Ø¹Ø¶Û Ø§Ø² Ù
ØªØ¯ÙØ§ در Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§ Ù
Ù
ک٠است با ÙÙ
ØªØ·Ø§Ø¨Ù Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÙØ¯Ø Ø¨Ø±Ø§Û Ù
ثا٠Array.prototype Ù
تد toString Ø®ÙØ¯Ø´ را دارد ک٠اÙÙ
اÙâÙØ§ را Ø¨Ù ØµÙØ±Øª Ø¬Ø¯Ø§Ø´Ø¯Ù ØªÙØ³Ø· کاÙ
ا ÙÛØ³Øª Ù
ÛâÚ©ÙØ¯:
let arr = [1, 2, 3]
alert(arr); // 1,2,3 <-- Array.prototype.toString ÙØªÛجÙâÛ
ÙÙ
Ø§ÙØ·Ùر Ú©Ù ÙØ¨Ùا Ø¯ÛØ¯ÛÙ
Ø Object.prototype ÙÙ
Ù
تد toString را دارد اÙ
ا Array.prototype در Ø²ÙØ¬ÛØ±Ù ÙØ²Ø¯ÛÚ©âØªØ± است پس ÙÙØ¹ آراÛÙ Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯.
Ø§Ø¨Ø²Ø§Ø±ÙØ§Û درÙÙ Ù
Ø±ÙØ±Ú¯Ø± Ù
اÙÙØ¯ Ú©ÙØ³ÙÙ ØªÙØ³Ø¹ÙâØ¯ÙÙØ¯Ù کرÙÙ
ÙÙ
Ø§Ø±Ø«âØ¨Ø±Û Ø±Ø§ ÙØ´Ø§Ù Ù
ÛâØ¯ÙÙØ¯ (Ù
Ù
ک٠است Ø¨Ø±Ø§Û Ø´ÛØ¡ÙØ§Û Ø¯Ø±ÙÙâØ³Ø§Ø®Øª ÙÛØ§Ø² باشد Ú©Ù console.dir Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯):
بÙÛÙ Ø´ÛØ¡ÙØ§Û Ø¯Ø±ÙÙâØ³Ø§Ø®Øª ÙÙ
اÛÙ ÚÙÛ٠کار Ù
ÛâÚ©ÙÙØ¯. ØØªÛ تابعâÙØ§ â Ø¢ÙâÙØ§ Ø´ÛØ¡ÙاÛÛ Ø§Ø² Ø³Ø§Ø²ÙØ¯Ù Function ÙØ³ØªÙد Ù Ù
ØªØ¯ÙØ§Û Ø¢ÙâÙØ§ (call/apply ٠بÙÛÙ) از Function.prototype Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙÙØ¯. تابعâÙØ§ toString Ø®ÙØ¯Ø´Ø§Ù را ÙÙ
Ø¯Ø§Ø±ÙØ¯.
function f() {}
alert(f.__proto__ == Function.prototype); // true
alert(f.__proto__.__proto__ == Object.prototype); // true ØØ§Ø±Ø«âØ¨Ø±Û Ø§Ø² Ø´ÛØ¡Ùا
Ù ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ
Ù¾ÛÚÛØ¯ÙâØªØ±ÛÙ ÚÛØ²Û ک٠با رشتÙâÙØ§Ø Ø¹Ø¯Ø¯ÙØ§ ٠بÙÙÛÙâÙØ§ Ø§ØªÙØ§Ù Ù ÛâØ§ÙØªØ¯.
ÙÙ
Ø§ÙØ·Ùر Ú©Ù Ø¨Ù ÛØ§Ø¯ دارÛÙ
Ø Ø¢ÙâÙØ§ Ø´ÛØ¡ ÙÛØ³ØªÙد. اÙ
ا اگر Ø³Ø¹Û Ú©ÙÛÙ
ک٠ب٠ÙÛÚÚ¯ÛâÙØ§Û Ø¢ÙâÙØ§ Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ú©ÙÛÙ
Ø Ø´ÛØ¡ÙØ§Û Ø¯Ø±Ø¨Ø±Ú¯ÛØ±Ùد٠Ù
ÙÙØªÛ با Ø§Ø³ØªÙØ§Ø¯Ù از Ø³Ø§Ø²ÙØ¯ÙâÙØ§Û درÙÙâØ³Ø§Ø®Øª StringØ Number Ù Boolean ساخت٠Ù
ÛâØ´ÙÙØ¯. Ø¢ÙâÙØ§ Ù
ØªØ¯ÙØ§ را ÙØ±Ø§ÙÙ
Ù
ÛâÚ©ÙÙØ¯ ٠سپس ÙØ§Ù¾Ø¯Ûد Ù
ÛâØ´ÙÙØ¯.
اÛÙ Ø´ÛØ¡Ùا Ø¨Ù ØµÙØ±Øª Ù¾ÙÙØ§ÙÛ Ø§ÛØ¬Ø§Ø¯ Ù
ÛâØ´ÙÙØ¯ Ù Ø¨ÛØ´ØªØ± Ù
ÙØªÙØ±ÙØ§ Ø¢ÙâÙØ§ را بÙÛÙÙ Ù
ÛâÚ©ÙÙØ¯ اÙ
ا Ø®ØµÙØµÛات زبا٠دÙÛÙØ§ ب٠ÙÙ
ÛÙ ØµÙØ±Øª Ø¢ÙâÙØ§ را ØªÙØµÛÙ Ù
ÛâÚ©ÙØ¯. Ù
ØªØ¯ÙØ§Û اÛÙ Ø´ÛØ¡Ùا ÙÙ
درÙÙ Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§ ÙØ±Ø§Ø± Ø¯Ø§Ø±ÙØ¯ Ù Ø¨Ù ØµÙØ±Øª String.prototypeØ Number.prototype Ù Boolean.prototype در دسترس ÙØ³ØªÙد.
null Ù undefined Ø¯Ø§Ø±Ø§Û Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙØ¯Ù Ø´ÛØ¡ ÙÛØ³ØªÙدÙ
ÙØ¯Ø§Ø±ÙØ§Û Ø®Ø§Øµ null Ù undefined Ø§Ø³ØªØ«ÙØ§ ÙØ³ØªÙد. Ø¢ÙâÙØ§ Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙØ¯Ù Ø´ÛØ¡ ÙØ¯Ø§Ø±Ùد پس Ù
ØªØ¯ÙØ§ Ù ÙÛÚÚ¯ÛâÙØ§ÛÛ ÙÙ
Ø¨Ø±Ø§Û Ø¢ÙâÙØ§ Ù
ÙØ¬Ùد ÙÛØ³Øª. Ù Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û Ù
ØªÙØ§Ø¸Ø± ÙÙ
ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
تغÛÛØ± Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û ÙÛØªÛÙ
Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û ÙÛØªÛÙ (Native prototypes) Ù
ÛâØªÙØ§ÙÙØ¯ تغÛÛØ± Ú©ÙÙØ¯. Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ اگر Ù
ا Ù
ØªØ¯Û Ø±Ø§ ب٠String.prototype اضاÙÙ Ú©ÙÛÙ
Ø Ø§ÛÙ Ù
تد Ø¨Ø±Ø§Û ØªÙ
اÙ
رشتÙâÙØ§ در دسترس Ø®ÙØ§Ùد Ø¨ÙØ¯:
String.prototype.show = function() {
alert(this);
};
"BOOM!".show(); // BOOM!
در ØÛÙ ÙØ±Ø§ÛÙØ¯ ØªÙØ³Ø¹ÙØ Ù Ù Ú©Ù Ø§Ø³Øª Ø§ÛØ¯ÙâÙØ§ÛÛ Ø¨Ø±Ø§Û Ù ØªØ¯ÙØ§Û درÙÙâØ³Ø§Ø®Øª Ø¬Ø¯ÛØ¯Û ب٠ذÙÙâ٠ا٠برسد Ú©Ù Ø¨Ø®ÙØ§ÙÛ٠آÙâÙØ§ را داشت٠باشÛ٠٠٠٠ک٠است ٠شتا٠باشÛ٠ک٠آÙâÙØ§ را Ø¨Ù Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û ÙÛØªÛ٠اضاÙÙ Ú©ÙÛÙ . ا٠ا Ø¨Ù Ø·ÙØ± Ú©ÙÛ Ø§Û٠کار Ø¨Ø¯Û Ø§Ø³Øª.
Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§ Ú¯ÙÙØ¨Ø§Ù ÙØ³ØªÙØ¯Ø Ù¾Ø³ Ø¯Ø±ÛØ§Ùت ØªÙØ§Ùض آسا٠است. اگر د٠کتابخاÙÙ Ù
تد String.prototype.show را اضاÙÙ Ú©ÙÙØ¯Ø ÛÚ©Û Ø§Ø² Ø¢ÙâÙØ§ Ù
Ù
ک٠است Ù
تد دÛÚ¯Ø±Û Ø±Ø§ بازÙÙÛØ³Û Ú©ÙØ¯.
پس Ø¨Ù Ø·ÙØ± Ú©ÙÛØ تغÛÛØ± ÛÚ© Ù¾Ø±ÙØªÙتاÛÙ¾ ÙÛØªÛ٠کار Ø¨Ø¯Û Ù ØØ³Ùب Ù ÛâØ´ÙØ¯.
در Ø¨Ø±ÙØ§Ù ÙâÙÙÛØ³Û Ù Ø¯Ø±ÙØ ÙÙØ· ÛÚ© Ù ÙØ±Ø¯ است ک٠تغÛÛØ± Ø¯Ø§Ø¯Ù Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û ÙÛØªÛÙ ÙØ§Ø¨Ù ÙØ¨Ù٠است. Ø¢Ù ÙÙ Ù¾ÙÛÙÛÙâØ³Ø§Ø²Û Ø§Ø³Øª.
Ù¾ÙÛÙÛÙâØ³Ø§Ø²Û (polyfilling) Ø¹Ø¨Ø§Ø±ØªÛ Ø¨Ø±Ø§Û Ø§ÛØ¬Ø§Ø¯ ÛÚ© جاÛگزÛÙ Ø¨Ø±Ø§Û Ù ØªØ¯Û Ø§Ø³Øª ک٠در Ø®ØµÙØµÛات Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ÙØ¬Ùد دارد ا٠ا ÙÙÙØ² ØªÙØ³Ø· Ù ÙØªÙر Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø®Ø§ØµÛ Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙÙ ÛâØ´ÙØ¯.
سپس Ù ÛâØªÙØ§ÙÛ٠آ٠را Ø¨Ù ØµÙØ±Øª Ø¯Ø³ØªÛ Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ù Ø¨Ù Ù¾Ø±ÙØªÙتاÛÙ¾ درÙÙâØ³Ø§Ø®Øª اضاÙÙ Ú©ÙÛÙ .
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
if (!String.prototype.repeat) { // اگر ÚÙÛÙ Ù
ØªØ¯Û ÙØ¬Ùد ÙØ¯Ø§Ø´ØªÙ باشد
// آ٠را Ø¨Ù Ù¾Ø±ÙØªÙتاÛÙ¾ اضاÙÙ Ú©Ù
String.prototype.repeat = function(n) {
// بار تکرار ک٠n رشت٠را
// در ÙØ§Ùع کد Ø¨Ø§ÛØ¯ ÙØ³Ø¨Øª ب٠اÛÙ Ú©Ù
Û Ø¨ÛØ´ØªØ± Ù¾ÛÚÛØ¯Ù باشد
// (اÙÚ¯ÙØ±ÛتÙ
کاÙ
٠درÙÙ Ø®ØµÙØµÛات زبا٠Ù
ÙØ¬Ùد است)
// اÙ
ا ØØªÛ ÛÚ© Ù¾ÙÛÙÛÙ ÙØ§Ú©Ø§Ù
Ù ÙÙ
Ø§ØºÙØ¨ اÙÙØ§Øª کاÙÛ Ø§Ø³Øª
return new Array(n + 1).join(this);
};
}
alert( "La".repeat(3) ); // LaLaLa
ÙØ±Ø¶ Ú¯Ø±ÙØªÙ از Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§
در ÙØµÙ Ø¯Ú©ÙØ±Ø§ØªÙØ±ÙØ§ Ù Ø§Ø±Ø³Ø§Ù Ú©Ø±Ø¯ÙØ Ù ØªØ¯ÙØ§Û call/apply ٠ا Ø¯Ø±Ø¨Ø§Ø±Ù ÙØ±Ø¶ Ú¯Ø±ÙØªÙ ٠تد ØµØØ¨Øª کردÛÙ .
اÛ٠ز٠اÙÛ Ø§Ø³Øª ک٠٠ا Ù ØªØ¯Û Ø±Ø§ از ÛÚ© Ø´ÛØ¡ Ø¯Ø±ÛØ§Ùت Ù ÛâÚ©ÙÛ٠٠آ٠را درÙÙ Ø´ÛØ¡ دÛÚ¯Ø±Û Ú©Ù¾Û Ù ÛâÚ©ÙÛÙ .
Ø¨Ø¹Ø¶Û Ø§Ø² Ù ØªØ¯ÙØ§Û Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û ÙÛØªÛÙ Ø§ØºÙØ¨ اÙÙØ§Øª ÙØ±Ø¶ Ú¯Ø±ÙØªÙ Ù ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ اگر Ù
ا در ØØ§Ù ساخت ÛÚ© Ø´ÛØ¡ آراÛÙ Ù
اÙÙØ¯ باشÛÙ
Ø Ù
Ù
ک٠است Ø¨Ø®ÙØ§ÙÛÙ
Ø¨Ø¹Ø¶Û Ø§Ø² Ù
ØªØ¯ÙØ§Û Array را درÙÙ Ø¢Ù Ú©Ù¾Û Ú©ÙÛÙ
.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let obj = {
0: "Hello",
1: "world!",
length: 2,
};
obj.join = Array.prototype.join;
alert( obj.join(',') ); // Hello,world!
اÛ٠کد کار Ù
ÛâÚ©ÙØ¯ ÚÙ٠اÙÚ¯ÙØ±ÛتÙ
داخÙÛ Ù
تد درÙÙâØ³Ø§Ø®Øª join ÙÙØ· ب٠اÛÙØ¯Ú©Ø³âÙØ§Û درست Ù ÙÛÚÚ¯Û length اÙÙ
ÛØª Ù
ÛâØ¯ÙØ¯. اÛÙ Ù
تد Ø¨Ø±Ø±Ø³Û ÙÙ
ÛâÚ©ÙØ¯ Ú©Ù Ø´ÛØ¡ ÙØ§Ùعا ÛÚ© آراÛ٠باشد. Ø¨Ø³ÛØ§Ø±Û از Ù
ØªØ¯ÙØ§Û درÙÙâØ³Ø§Ø®Øª ÙÙ
ÛÙÚ¯ÙÙÙ ÙØ³ØªÙد.
Ø§ØØªÙ
ا٠دÛگر ÙÙ
Ø§Ø±Ø«âØ¨Ø±Û Ø§Ø³Øª ک٠از طرÛ٠برابر ÙØ±Ø§Ø± داد٠obj.__proto__ با Array.prototype Ø§ÙØ¬Ø§Ù
Ù
ÛâØ´ÙØ¯Ø پس تÙ
اÙ
Ù
ØªØ¯ÙØ§Û Array Ø¨Ù ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± درÙÙ obj ÙØ§Ø¨Ù Ø¯Ø³ØªØ±Ø³Û Ø®ÙØ§ÙÙØ¯ Ø¨ÙØ¯.
اÙ
ا اگر obj از ÙØ¨Ù از Ø´ÛØ¡ دÛÚ¯Ø±Û Ø§Ø±Ø«âØ¨Ø±Û Ú©ÙØ¯ اÛ٠کار ÙØ§Ù
Ù
Ú©Ù Ù
ÛâØ´ÙØ¯. Ø¨Ù ÛØ§Ø¯ Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯Ø Ù
ا Ø¨Ù Ø·ÙØ± ÙÙ
زÙ
ا٠ÙÙØ· Ù
ÛâØªÙØ§ÙÛÙ
از ÛÚ© Ø´ÛØ¡ Ø§Ø±Ø«âØ¨Ø±Û Ú©ÙÛÙ
.
ÙØ±Ø¶ Ú¯Ø±ÙØªÙ Ù ØªØ¯ÙØ§ ÙØ§Ø¨Ù Ø§ÙØ¹Ø·Ø§Ù Ø§Ø³ØªØ Ø§ÛÙ Ø±ÙØ´ اجاز٠٠ÛâØ¯ÙØ¯ ک٠در ØµÙØ±Øª ÙÛØ§Ø² ع٠ÙÛØ§ØªâÙØ§ÛÛ Ø§Ø² Ø´ÛØ¡ÙØ§Û Ù Ø®ØªÙ٠را با ÙÙ ØªØ±Ú©ÛØ¨ Ú©ÙÛÙ .
Ø®ÙØ§ØµÙ
- تÙ
اÙ
Ø´ÛØ¡ÙØ§Û Ø¯Ø±ÙÙâØ³Ø§Ø®Øª اÙÚ¯ÙÛÛ Ûکسا٠را Ø¯ÙØ¨Ø§Ù Ù
ÛâÚ©ÙÙØ¯:
- Ù
ØªØ¯ÙØ§ درÙÙ Ù¾Ø±ÙØªÙتاÛÙ¾ Ø°Ø®ÛØ±Ù شدÙâØ§ÙØ¯ (
Array.prototypeØObject.prototypeØDate.prototypeÙ ØºÛØ±Ù.) - The object itself stores only the data (array items, object properties, the date)
- Ø®ÙØ¯ Ø´ÛØ¡ ÙÙØ· داد٠را Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙØ¯ (اÙ٠اÙâÙØ§Û آراÛÙØ ÙÛÚÚ¯ÛâÙØ§Û Ø´ÛØ¡Ø ØªØ§Ø±ÛØ®)
- Ù
ØªØ¯ÙØ§ درÙÙ Ù¾Ø±ÙØªÙتاÛÙ¾ Ø°Ø®ÛØ±Ù شدÙâØ§ÙØ¯ (
- Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ØµÙÛ ÙÙ
Ù
ØªØ¯ÙØ§ را درÙÙ Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û Ø´ÛØ¡ÙØ§Û Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙØ¯Ù Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙÙØ¯ :
Number.prototypeØString.prototypeÙBoolean.prototype. ÙÙØ·undefinedÙnullØ´ÛØ¡ÙØ§Û Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙØ¯Ù ÙØ¯Ø§Ø±Ùد. - Ù¾Ø±ÙØªÙتاÛÙ¾âÙØ§Û درÙÙâØ³Ø§Ø®Øª Ù ÛâØªÙØ§ÙÙØ¯ تغÛÛØ± Ú©ÙÙØ¯ ÛØ§ با Ù ØªØ¯ÙØ§Û Ø¬Ø¯ÛØ¯ پر Ø´ÙÙØ¯. ا٠ا Ù¾ÛØ´ÙÙØ§Ø¯ ÙÙ ÛâØ´ÙØ¯ ک٠آÙâÙØ§ را تغÛÛØ± دÙÛØ¯. تÙÙØ§ Ù ÙØ±Ø¯Û ک٠٠جاز است Ø§ØØªÙ Ø§ÙØ§ ز٠اÙÛ Ø§Ø³Øª ک٠٠ا Ù ÛâØ®ÙØ§ÙÛÙ ÛÚ© Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯ Ø¬Ø¯ÛØ¯ را اضاÙÙ Ú©ÙÛ٠ا٠ا ÙÙÙØ² ØªÙØ³Ø· Ù ÙØªÙر Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙØ´Ø¯Ù است.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)