ใน JavaScript ฟังก์ชั่นทางกฎหมายใด ๆ สามารถใช้เป็นตัวสร้างวัตถุซึ่งรวมถึงฟังก์ชั่นในตัวทั้งในระบบและฟังก์ชั่นที่กำหนดโดยผู้ใช้ เมื่อฟังก์ชั่นถูกดำเนินการเป็นตัวสร้างคุณสมบัติภายในนี้จะอ้างถึงฟังก์ชั่นเอง
โดยทั่วไปแล้วตัวสร้างจะไม่คืนค่าพวกเขาเพียงแค่เริ่มต้นวัตถุที่ส่งผ่านโดยตัวชี้นี้และไม่กลับอะไรเลย หากฟังก์ชั่นมีค่าส่งคืนวัตถุที่ส่งคืนจะกลายเป็นค่าของนิพจน์ใหม่ จากมุมมองที่เป็นทางการความแตกต่างเพียงอย่างเดียวระหว่างฟังก์ชั่นที่ดำเนินการเป็นตัวสร้างหรือฟังก์ชั่นทั่วไปไม่ว่าจะใช้ตัวดำเนินการใหม่
คำอธิบายข้างต้นมีความหมายที่แม่นยำมากขึ้น
หากค่าส่งคืนของฟังก์ชั่นเป็นข้อมูลของประเภทการอ้างอิง (อาร์เรย์, วัตถุหรือฟังก์ชั่น) จากนั้นเมื่อฟังก์ชั่นนี้ดำเนินการการก่อสร้างกับตัวดำเนินการใหม่เป็นตัวสร้างผลลัพธ์ของการดำเนินการจะถูกแทนที่ด้วยค่าคืน เวลานี้ตัวสร้างตัวสร้างอยู่ในค่านี้หายไปและถูกแทนที่ด้วยวัตถุที่ส่งคืน ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
การทดสอบฟังก์ชั่น ()
-
this.a = 10;
ฟังก์ชั่น return ()
-
กลับ 1;
-
-
แจ้งเตือน M = การทดสอบใหม่ ();
var n = test ();
Alert (M); // ส่งคืนการปิดหลังจากผลตอบแทน
Alert (n); // ส่งคืนการปิดหลังผลตอบแทน
ค่าของผลการทำงาน M และ N นั้นเหมือนกันทั้งคู่จะถูกส่งคืนโดยฟังก์ชั่นการทดสอบและวัตถุที่อ้างอิงโดยสิ่งนี้และผลลัพธ์ที่ได้รับมอบหมายของสิ่งนี้ A = 10 ถูกทิ้งทั้งหมด
หากค่าส่งคืนของฟังก์ชั่นเป็นประเภทค่าแล้วเมื่อฟังก์ชั่นดำเนินการก่อสร้างโดยใช้ตัวดำเนินการใหม่เป็นตัวสร้างค่าส่งคืนจะถูกยกเลิก ผลลัพธ์ของนิพจน์ใหม่ยังคงเป็นวัตถุที่อ้างอิงโดยสิ่งนี้
การคัดลอกรหัสมีดังนี้:
การทดสอบฟังก์ชั่น ()
-
this.a = 10;
กลับ 1;
-
แจ้งเตือน M = การทดสอบใหม่ ();
var n = test ();
Alert (M) // return [Object]
การแจ้งเตือน (n) // return 1