في javaScript ، يمكن استخدام أي وظيفة قانونية كمؤسس كائن ، والذي يتضمن كل من الوظائف المدمجة في النظام والوظائف المحددة من قبل المستخدم. بمجرد تنفيذ الوظيفة كمنشئ ، ستشير هذه الخاصية بداخلها إلى الوظيفة نفسها.
بشكل عام ، لا يقوم المنشئون بإرجاع القيم ، بل يقومون بتهيئة الكائن الذي تم تمريره بواسطة هذا المؤشر ولا يعيدون شيئًا. إذا كان للدالة قيمة إرجاع ، يصبح الكائن الذي تم إرجاعه قيمة التعبير الجديد. من وجهة نظر رسمية ، فإن الفرق الوحيد بين الوظيفة التي يتم تنفيذها كمنشئ أو وظيفة عادية ، سواء كنت تستخدم المشغل الجديد.
الوصف أعلاه لديه في الواقع معنى أكثر دقة.
إذا كانت قيمة الإرجاع للدالة هي بيانات من نوع المرجع (الصفيف أو الكائن أو الدالة) ، فعندما تنفذ هذه الوظيفة البناء مع المشغل الجديد كمؤسسة ، سيتم استبدال العملية بقيمة الإرجاع هذه المرة ، يتم فقدان جسم المنشئ في هذه القيمة ، ويتم استبداله بالكائن الذي تم إرجاعه. على سبيل المثال:
نسخة الكود كما يلي:
اختبار الوظيفة ()
{
this.a = 10 ؛
وظيفة الإرجاع ()
{
العودة 1 ؛
}
}
التنبيه M = اختبار جديد () ؛
var n = test () ؛
التنبيه (M) ؛ // إرجاع الإغلاق بعد العودة
تنبيه (ن) ؛ // إرجاع الإغلاق بعد العودة
قيمة النتيجة قيد التشغيل M و N هي نفسها ، وكلاهما يتم إغلاقه بواسطة وظيفة الاختبار ، والكائن المشار إليه من قبل هذا ونتيجة المهمة لهذا. A = 10 يتم التخلص منها.
إذا كانت قيمة الإرجاع للدالة هي نوع قيمة ، فعندما تنفذ الوظيفة البناء باستخدام المشغل الجديد كمشارك ، سيتم التخلص من قيمة الإرجاع الخاصة به. نتيجة التعبير الجديد لا تزال الكائن المشار إليه بهذا.
نسخة الكود كما يلي:
اختبار الوظيفة ()
{
this.a = 10 ؛
العودة 1 ؛
}
التنبيه M = اختبار جديد () ؛
var n = test () ؛
تنبيه (م) // إرجاع [كائن]
تنبيه (ن) // العودة 1.