1. ما هو مُنشئ
المنشئون شائعون جدًا في بعض اللغات الموجهة للكائنات مثل Java و C ++ و PHP. في JavaScript ، يكون المُنشئ أولاً وظيفة طبيعية ، يمكن استدعاؤها باستخدام المشغل الجديد وينشئ كائنًا من النوع الخاص.
نسخة الكود كما يلي:
// "بنيامين" مُنشئ
var Benjamin = New Benjamin ("Zuojj" ، "Male") ؛
في المثال أعلاه ، بنيامين هو كائن بنيامين ، فكيف يتم إنشاءه؟
نسخة الكود كما يلي:
وظيفة بنيامين (اسم المستخدم ، الجنس) {
this.username = اسم المستخدم ؛
this.Sex = الجنس ؛
}
var Benjamin = New Benjamin ("Zuojj" ، "Male") ؛
// المخرجات: بنيامين {الجنس: "ذكر" ، اسم المستخدم: "Zuojj"}
console.log (بنيامين) ؛
كما نرى ، يستقبل مُنشئ "Benjamin" ببساطة معلمات تم تمريرها ويعينها لهذا الكائن. هذا لأنه عندما يتم استدعاء المنشئ من قبل المشغل الجديد ، يتم تعيين هذا الكائن المُنشئ للكائن الذي تم إرجاعه بواسطة العملية الجديدة.
هذا يعني أن الكود أعلاه يعادل:
نسخة الكود كما يلي:
بنيامين = {
"اسم المستخدم": "Zuojj" ،
"الجنس": "ذكر"
}
2. لماذا تستخدم المنشئين
هناك العديد من الأسباب التي تجعل البنائين يستخدمون:
1. استخدام المنشآت يعني أنه يمكن إنشاء كل هذه الكائنات باستخدام نفس الهيكل الأساسي.
2. استخدام مُنشئ يعني أن كائن "بنيامين" يتم تمييزه بشكل صريح كمثيل لوظيفة "بنيامين"
نسخة الكود كما يلي:
وظيفة بنيامين (اسم المستخدم ، الجنس) {
this.username = اسم المستخدم ؛
this.Sex = الجنس ؛
}
var Benjamin = New Benjamin ("Zuojj" ، "Male") ؛
فار بن = {
"اسم المستخدم": "Zuojj" ،
"الجنس": "ذكر"
}
// المخرجات: صحيح
console.log (benjamin extrealof benjamin) ؛
// المخرجات: خطأ
console.log (ben extryof benjamin) ؛
3. استخدام المنشئين يعني أنه يمكننا تحديد الأساليب العامة على النموذج الأولي لمشاركة مثيلات متعددة
نسخة الكود كما يلي:
وظيفة بنيامين (اسم المستخدم ، الجنس) {
this.username = اسم المستخدم ؛
this.Sex = الجنس ؛
}
benjamin.prototype.getName = function () {
إرجاع هذا. username ؛
}
var Benjamin = New Benjamin ("Zuojj" ، "Male") ؛
var ben = New Benjamin ("Lemon" ، "Female") ؛
// المخرجات: Zuojj
console.log (benjamin.getName ()) ؛
// المخرجات: الليمون
console.log (ben.getName ()) ؛
3. أشياء يجب ملاحظتها
1. كلمات رئيسية جديدة
عند إنشاء إنشاء مُنشئ ، يجب ألا تنسى استخدام الكلمة الرئيسية الجديدة. ما إذا كنت تستخدم الكلمة الرئيسية الجديدة سيكون لها تأثير كبير على هذا الكائن. بدون الكلمة الرئيسية الجديدة ، سيشير هذا الكائن إلى الكائن العالمي (نافذة في المتصفح والعالم في العقدة). لذلك ، عند تحديد مُنشئ ، يوصى برسمته الحرف الأول من اسم الوظيفة.
2. إذا لم يكن للدالة المدعو تعبير إرجاع صريح ، فسيتم إرجاع هذا الكائن ضمنيًا ، وهو الكائن الذي تم إنشاؤه حديثًا. خلاف ذلك ، ستتأثر النتيجة ، ولكن فقط إذا كان الكائن الذي تم إرجاعه
نسخة الكود كما يلي:
شريط الدالة () {
العودة 2 ؛
}
var bar = new bar () ؛
// إرجاع الكائن الذي تم إنشاؤه حديثًا
// المخرجات: شريط {}
console.log (bar) ؛
اختبار الوظيفة () {
this.value = 2 ؛
يعود {
فو: 1
} ؛
}
var test = new test () ؛
// كائن إرجاع
// المخرجات: كائن {foo: 1}
console.log (اختبار) ؛
ما نحتاج إلى الانتباه إليه هو:
أ) يقوم شريط جديد () بإرجاع الكائن الذي تم إنشاؤه حديثًا ، وليس القيمة الحرفية للرقم 2. لذلك شريط جديد ()
ب) الاختبار الجديد () الذي تم الحصول عليه هنا هو كائن يتم إرجاعه بواسطة الوظيفة ، وليس كائنًا تم إنشاؤه حديثًا من خلال الكلمة الرئيسية الجديدة ، كما هو موضح أدناه:
نسخة الكود كما يلي:
شريط الدالة () {
العودة 2 ؛
}
var bar = new bar () ؛
وظيفة barn () {
إرجاع الرقم الجديد (2) ؛
}
var barn = new Barn () ؛
// المخرجات: صحيح
console.log (bar.constructor === BAR) ؛
// المخرجات: الرقم {}
console.log (Barn) ؛
// ouputs: خطأ
console.log (barn.constructor === BARN) ؛
// المخرجات: صحيح
console.log (barn.constructor === number) ؛
/ * ---------------------------------- */
اختبار الوظيفة () {
this.value = 2 ؛
يعود {
فو: 1
} ؛
}
var test = new test () ؛
// المخرجات: غير محدد
console.log (test.value) ؛
// ouputs: 1
console.log (test.foo) ؛
ما سبق هو ملخص للمؤسس. آمل أن يكون من المفيد للمبتدئين. إذا كان هناك أي نقاط غير لائقة في المقالة ، آمل أن أنتقدها وتصحيحها.