1. مُنشئ
قيمة المنشئ هي وظيفة. في JavaScript ، فإن القيم والصفائف والوظائف والكائنات من الأنواع ، باستثناء سمة مُنشأة. يحب:
انسخ الرمز كما يلي: var a = 12 ، // number
ب = "سترين" ، // سلسلة
ج = خطأ ، // منطقي
d = [1 ، 'd' ، function () {return 5 ؛
e = {name: 'e'} ، // Object
f = function () {return 'function' ؛
console.log ('a:' ، a.constructor) ؛
console.log ('B:' ، B.Constructor) ؛
console.log ('c:' ، c.constructor) ؛
console.log ('d:' ، d.constructor) ؛
console.log ('e:' ، e.constructor) ؛
console.log ('f:' ، f.constructor) ؛
المنشئات المذكورة أعلاه مدمجة في JavaScript ، ويمكننا أيضًا تخصيص المنشآت ، مثل:
نسخة الكود كما يلي:
وظيفة (اسم) {
this.name = name ؛
}
var a = new a ('a') ؛
console.log (A.Constructor) ؛
عند استدعاء المُنشئ ، تحتاج إلى استخدام الكلمة الرئيسية الجديدة.
نسخة الكود كما يلي: var a = 4 ؛
var b = new number (4) ؛
console.log ('a:' ، typeof a) ؛
console.log ('b:' ، typeof b) ؛
2. النموذج الأولي
النموذج الأولي هو خاصية للدالة. يحب:
انسخ الرمز كما يلي: الدالة fn () {}
console.log (fn.protype) ؛
تُستخدم سمة النموذج الأولي بشكل أساسي لتنفيذ الميراث في JavaScript ، مثل:
انسخ الرمز كما يلي: الدالة A (الاسم) {
this.name = name ؛
}
A.Prototype.show = function () {
console.log (this.name) ؛
} ؛
الدالة B (الاسم) {
this.name = name ؛
}
B.Prototype = A.Prototype ؛
var test = new b ('test') ؛
Test.Show () ؛
هناك مشكلة هنا.
انسخ الكود على النحو التالي: console.log (test.constructor) ؛
وذلك لأن النمط B.Protype = A.Prototype غير مُنشئ النمط B.Protype إلى A ، لذلك تحتاج إلى استعادة مُنشئ النموذج B.Protype:
انسخ الرمز كما يلي: الدالة A (الاسم) {
this.name = name ؛
}
A.Prototype.show = function () {
console.log (this.name) ؛
} ؛
الدالة B (الاسم) {
this.name = name ؛
}
B.Prototype = A.Prototype ؛
B.Prototype.constructor = b ؛
var test = new b ('test') ؛
Test.Show () ؛
Console.log (Test.Constructor) ؛
السبب في ذلك هو أن قيمة النموذج الأولي هي كائن ، ووظيفة مُنشئها هي الوظيفة التي توجد بها ، أي:
انسخ الكود على النحو التالي: console.log (A.Protype.Constructor === A) ؛