ในทุกด้านการเรียกใช้ฟังก์ชันที่มีและไม่มีคำหลักใหม่แตกต่างกันในจาวาสคริปต์หรือไม่ ฉันหมายถึงทุกสิ่งที่แตกต่างกันอย่างไร
testFn() VS new testFn()
ในทุกด้านการเรียกใช้ฟังก์ชันที่มีและไม่มีคำหลักใหม่แตกต่างกันในจาวาสคริปต์หรือไม่ ฉันหมายถึงทุกสิ่งที่แตกต่างกันอย่างไร
testFn() VS new testFn()
คำตอบ:
newสร้างใหม่ (ว่าง) วัตถุและชุดthisไปแล้วเรียกฟังก์ชันซึ่งทำหน้าที่เป็นตัวสร้างสำหรับวัตถุ (โดยการจัดการthis. บางสิ่งบางอย่าง ) การเรียกฟังก์ชั่นเดียวกันโดยไม่ใช้newคำสำคัญจะทำให้มันทำงานได้ตามความthisหมายในปัจจุบัน
newและวัตถุที่สร้างขึ้นจะถูกทำลาย
newจะทำให้ต้นแบบของวัตถุใหม่ถูกตั้งค่าให้อ้างอิงว่าของฟังก์ชันแรกที่ส่งผ่านวัตถุใหม่ ฉันไม่คิดว่าพฤติกรรมสามารถทำได้อย่างถูกต้องตามกฎหมายด้วยวิธีการอื่น
ตัวแปรเหล่านี้มีความแตกต่างทางวากยสัมพันธ์: ด้วยตัวแปร "ใหม่" สมมติว่าฟังก์ชันเป็นตัวสร้าง ตัวแปรโดยไม่ต้อง "ใหม่" ซึมว่ามันเป็นไม่นวกรรมิก