Ø¥Ù Ø§ÙØ®Ø§ØµÙØ© "prototype" Ù
ستخدÙ
Ø© بشÙÙ ÙØ§Ø³Ø¹ Ù
Ù Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت ÙÙØ³ÙØ§Ø ØÙØ« Ø£Ù ÙÙ Ø§ÙØ¯ÙØ§Ù Ø§ÙØ¨Ø§ÙÙØ© (constructor functions) تستخدÙ
ÙØ§.
Ø£ÙÙÙØ§ Ø³ÙØ±Ù Ø§ÙØªÙاصÙÙØ Ø«Ù ÙØªØ¹ÙÙ ÙÙÙ ÙØ³ØªØ®Ø¯Ù ÙØ§ ÙØ¥Ø¶Ø§ÙØ© Ø¥Ù ÙØ§ÙÙØ§Øª Ø¬Ø¯ÙØ¯Ø© ÙÙÙØ§Ø¦Ùات اÙÙ ÙØ¬Ùدة باÙÙØ¹Ù (built-in objects).
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
Ù٠اذج Ø£Ø®Ø±Ù Ù ÙØ¬Ùدة باÙÙØ¹Ù (built-in prototypes)
إ٠اÙÙØ§Ø¦Ùات Ø§ÙØ£Ø®Ø±Ù اÙÙ
ÙØ¬Ùد٠باÙÙØ¹Ù Ù
ث٠Array, Date, Function ÙØºÙرÙÙ
ÙØØªÙØ¸ÙÙ Ø¨Ø¯ÙØ§Ù Ù٠اÙÙÙ
اذج (prototypes).
عÙ٠سبÙ٠اÙÙ
Ø«Ø§ÙØ Ø¹ÙØ¯Ù
ا ÙÙÙÙ
Ø¨Ø¥ÙØ´Ø§Ø¡ ÙØ§Ø¦Ù
Ø© [1, 2, 3]Ø ÙØ¥Ù Ø§ÙØ¯Ø§ÙØ© Ø§ÙØ¨Ø§ÙÙØ© اÙÙ
ÙØ¬Ùدة باÙÙØ¹Ù new Array() ÙØªÙ
استخداÙ
ÙØ§ داخÙÙÙØ§. ÙÙØ°ÙÙ ØªØµØ¨Ø Array.prototype اÙÙÙ
ÙØ°Ø¬ Ø§ÙØ®Ø§Øµ Ø¨ÙØ§ ÙØªÙ
ÙØÙØ§ Ø¯ÙØ§Ù خاصة ÙÙØ°Ø§ Ø´ÙØ¦ Ø¬ÙØ¯ جدÙÙØ§ ÙÙØ°Ø§Ùرة.
ÙÙ
ا ذÙÙØ± Ù٠اÙÙ
ØµØ¯Ø±Ø ÙØ¥Ù Ù٠اÙÙÙ
اذج (prototypes) اÙÙ
ÙØ¬Ùدة باÙÙØ¹Ù ÙØ¯ÙÙØ§ Object.prototype عÙ٠اÙÙÙ
Ø© ÙÙ Ø§ÙØ£Ø¹ÙÙ. ÙÙØ°Ø§ Ù
Ø§ÙØ¯Ùع بعض Ø§ÙØ£Ø´Ø®Ø§Øµ ÙÙÙÙ٠بأ٠âÙÙ Ø´ÙØ¦ ÙØ±Ø« Ù
٠اÙÙØ§Ø¦Ùاتâ.
ÙÙØ§ Ø§ÙØµÙرة اÙÙØ§Ù ÙØ©:
ÙÙØ§ ÙØ®ØªØ¨Ø± Ø§ÙØ®Ø§ØµÙØ© ÙØ¯ÙÙÙØ§:
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, ترث Ù
٠اÙÙØ§Ø¦Ùات
اÙÙÙ٠اÙÙ ÙØ±Ø¯Ø© Primitives
Ø£ÙØ«Ø± Ø§ÙØ£Ø´Ùاء اÙÙ Ø¹ÙØ¯Ø© ØªØØ¯Ø« ٠ع اÙÙØµÙص ÙØ§ÙØ£Ø±ÙØ§Ù ÙØ§ÙÙÙ٠اÙÙ Ø·ÙÙØ©.
ÙÙ
ا ÙØªØ°Ùر ÙØ¥ÙÙÙ
ÙÙØ³Ù عبارة Ø¹Ù ÙØ§Ø¦ÙØ§ØªØ ÙÙÙ٠إذا ØØ§ÙÙÙØ§ Ø£Ù ÙØµÙ Ø¥Ù٠خصائصÙÙ
ÙØ³ÙتÙ
Ø¥ØØ§Ø·ØªÙا Ø¨ÙØ§Ø¦Ù باستخداÙ
Ø§ÙØ¯ÙØ§Ù Ø§ÙØ¨Ø§ÙÙØ© String Ù Number Ù BooleanØ ØÙØ« ÙÙ
ÙØÙÙÙÙ
Ø§ÙØ¯Ùا٠ثÙ
ÙØ®ØªÙÙÙ.
ÙØ°Ù اÙÙØ§Ø¦Ùات تÙ
Ø¥ÙØ´Ø§Ø¤Ùا ÙÙØ§ Ø®ÙÙØ©Ù ÙØ£ØºÙب اÙÙ
ØØ±Ùات تÙÙÙ
Ø¨ØªØØ³Ù٠ذÙÙØ ÙÙÙÙ ÙØµÙÙØ§ اÙÙ
صدر Ø¨ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ© Ø¨Ø§ÙØ¶Ø¨Ø·. ÙØ¯ÙØ§Ù ÙØ°Ù اÙÙØ§Ø¦Ùات ØªÙØ¬Ø¯ Ø£ÙØ¶Ùا Ù٠اÙÙÙ
اذج ÙØªÙÙÙ Ù
ØªØ§ØØ© ÙÙ String.prototype Ù Number.prototype Ù Boolean.prototype.
null Ù undefined ÙÙØ³ ÙÙØ§ ÙØ§Ø¦Ùات ØØ§ÙÙØ©Ø§ÙÙÙÙ
Ø§ÙØ®Ø§ØµØ© null Ù undefined تÙÙ Ø¨Ø¹ÙØ¯Ùا Ø¹Ù ÙØ°Ø§. ØÙØ« Ø£ÙÙÙ
ÙÙØ³ ÙØ¯ÙÙÙ
ÙØ§Ø¦Ùات ØØ§ÙÙØ© (object wrappers)Ø ÙÙØ°ÙÙ ÙØ¥Ù Ø§ÙØ¯ÙØ§Ù ÙØ§Ùخصائص ØºÙØ± Ù
ØªØ§ØØ© ÙÙÙ
ÙÙÙØ³ ÙÙØ§Ù ÙÙ
اذج ÙÙÙ
.
Ø§ÙØªØ¹Ø¯Ù٠عÙ٠اÙÙ٠اذج Ø§ÙØ¨Ø¯Ø§Ø¦ÙØ© (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 Ù
٠اÙÙ
رات
// ÙÙ Ø§ÙØÙÙÙØ©Ø ÙØ¬Ø¨ Ø£Ù ÙÙÙ٠اÙÙÙØ¯ Ø£ÙØ«Ø± تعÙÙØ¯Ùا بÙÙÙÙ Ù
Ù ÙØ°Ø§
// (the full algorithm is in the specification)
// ÙÙÙÙ ØØªÙ تعدد Ø§ÙØ£Ø´ÙØ§Ù Ø§ÙØºÙر ÙØ§Ù
Ù ØºØ§ÙØ¨Ùا Ù
ا ÙÙÙÙ ÙØ§ÙÙÙØ§
return new Array(n + 1).join(this);
};
}
alert("La".repeat(3)); // LaLaLa
Ø§ÙØ¥Ø³ØªØ¹Ø§Ø±Ø© ٠٠اÙÙ٠اذج
ÙÙ ÙØµÙ اÙÙ Ø²Ø®Ø±ÙØ§Øª decoratorsâ ÙØ§ÙØªÙ Ø±ÙØ± forwarding: Ø§ÙØªØ§Ø¨Ø¹Ø§Ù 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 ÙØ±Ø« باÙÙØ¹Ù Ù
Ù ÙØ§Ø¦Ù Ø¢Ø®Ø±Ø ØªØ°ÙØ± Ø£ÙÙØ§ ÙÙ
ÙÙÙØ§ Ø£Ù ÙØ±Ø« Ù
Ù ÙØ§Ø¦Ù ÙØ§ØØ¯ ÙÙØ· Ù٠اÙÙ
رة اÙÙØ§ØØ¯Ø©.
إ٠استعارة Ø§ÙØ¯Ùا٠٠ر٠ÙÙØ³Ù Ø Ø¨Ù Ø²Ø¬ اÙÙØ¸Ø§Ø¦Ù Ù Ù ÙØ§Ø¦Ùات ٠ختÙÙØ© إذا Ø£Ø±Ø¯ÙØ§ ذÙÙ.
اÙÙ ÙØ®Øµ
- تتبع Ù٠اÙÙØ§Ø¦Ùات اÙÙ
ÙØ¬Ùدة باÙÙØ¹Ù ÙÙØ³ اÙÙÙ
Ø·:
- ÙØªÙ
Ø§ÙØ¥ØØªÙاظ Ø¨Ø§ÙØ¯Ùا٠Ù٠اÙÙÙ
ÙØ°Ø¬ (prototype) (
Array.prototype,Object.prototype,Date.prototype, Ø¥ÙØ®.) - ÙØªÙ تخزÙÙ Ø§ÙØ¨ÙØ§ÙØ§Øª ÙÙØ· Ù٠اÙÙØ§Ø¦Ù (Ø¹ÙØ§ØµØ± ÙØ§Ø¦Ù Ø© أ٠خصائص ÙØ§Ø¦Ù Ø£Ù ØªØ§Ø±ÙØ®)
- ÙØªÙ
Ø§ÙØ¥ØØªÙاظ Ø¨Ø§ÙØ¯Ùا٠Ù٠اÙÙÙ
ÙØ°Ø¬ (prototype) (
- اÙÙÙÙ
اÙÙ
ÙØ±Ø¯Ø© (Primitives) ØªØ®Ø²Ù Ø§ÙØ¯Ùا٠ÙÙ ÙÙ
ÙØ°Ø¬ خاص باÙÙØ§Ø¦Ù Ø§ÙØØ§ÙÙ (wrapper object):
Number.prototypeÙString.prototypeÙBoolean.prototype. ÙÙØ§ ÙÙØ¬Ø¯ ÙØ§Ø¦Ù ØØ§ÙÙ ÙÙÙÙ٠تÙÙundefinedÙnull. - اÙÙ٠اذج اÙÙ ÙØ¬Ùدة باÙÙØ¹Ù (Built-in prototypes) ÙÙ Ù٠تعدÙÙÙØ§ Ø£Ù Ø¥Ø¶Ø§ÙØ© Ø¯ÙØ§Ù Ø¬Ø¯ÙØ¯Ø© ÙÙØ§Ø ÙÙÙÙ ÙØ°Ø§ ØºÙØ± Ù ÙØµÙÙ Ø¨ÙØ ÙØ¥Ù Ø§ÙØØ§ÙØ© اÙÙØÙØ¯Ø© اÙÙ Ø³Ù ÙØ ÙÙÙØ§ بذÙÙ ÙÙ Ø¹ÙØ¯Ù ا ÙØ±Ùد Ø£Ù ÙØ°ÙÙ ÙØ¸ÙÙØ© Ø¬Ø¯ÙØ¯Ø© Ù ÙØ¬Ùدة Ù٠اÙ٠صدر ÙÙÙÙÙØ§ Ù Ø§Ø²Ø§ÙØª ØºÙØ± ٠دعÙÙ Ø© Ù Ù Ù ØØ±Ù Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت ٠عÙÙ.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)