ความแตกต่างพื้นฐานระหว่าง fn () และ fn ใหม่ () ใน javascript


12

ในทุกด้านการเรียกใช้ฟังก์ชันที่มีและไม่มีคำหลักใหม่แตกต่างกันในจาวาสคริปต์หรือไม่ ฉันหมายถึงทุกสิ่งที่แตกต่างกันอย่างไร

testFn() VS new testFn()

คำตอบ:


13

newสร้างใหม่ (ว่าง) วัตถุและชุดthisไปแล้วเรียกฟังก์ชันซึ่งทำหน้าที่เป็นตัวสร้างสำหรับวัตถุ (โดยการจัดการthis. บางสิ่งบางอย่าง ) การเรียกฟังก์ชั่นเดียวกันโดยไม่ใช้newคำสำคัญจะทำให้มันทำงานได้ตามความthisหมายในปัจจุบัน


มีอะไรอีกไหมในเรื่องนี้?
akp

@ akp ไม่มันง่ายจริงๆ ยกเว้นสิ่งที่ไม่ได้กล่าวถึงคือถ้าฟังก์ชันส่งคืนชนิดอ้างอิงอย่างชัดเจนนั้นจะถูกส่งคืนโดยnewและวัตถุที่สร้างขึ้นจะถูกทำลาย
Esailija

2
การใช้newจะทำให้ต้นแบบของวัตถุใหม่ถูกตั้งค่าให้อ้างอิงว่าของฟังก์ชันแรกที่ส่งผ่านวัตถุใหม่ ฉันไม่คิดว่าพฤติกรรมสามารถทำได้อย่างถูกต้องตามกฎหมายด้วยวิธีการอื่น
supercat

คุณพูดถูก
281377

1

ตัวแปรเหล่านี้มีความแตกต่างทางวากยสัมพันธ์: ด้วยตัวแปร "ใหม่" สมมติว่าฟังก์ชันเป็นตัวสร้าง ตัวแปรโดยไม่ต้อง "ใหม่" ซึมว่ามันเป็นไม่นวกรรมิก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.