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