ฉันสับสนกับdelete
โอเปอเรเตอร์ของ JavaScript รับรหัสต่อไปนี้:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
หลังจากชิ้นส่วนของรหัสนี้ได้รับการดำเนินการobj
เป็นnull
แต่ยังหมายถึงวัตถุที่ว่าเหมือนfoo
obj
ฉันเดาว่าวัตถุนี้เป็นวัตถุเดียวกับที่foo
ชี้ไป
สับสนนี้เราเพราะเราคาดว่าการเขียนที่delete obj
ถูกลบวัตถุที่ถูกชี้ไปในหน่วยความจำที่ไม่ได้เป็นเพียงตัวแปรobj
obj
นี่เป็นเพราะ Garbage Collector ของจาวาสคริปต์ทำงานบนการรักษา / ปล่อยดังนั้นถ้าฉันไม่มีตัวแปรอื่น ๆ ที่ชี้ไปที่วัตถุมันจะถูกลบออกจากหน่วยความจำ?
(โดยวิธีการทดสอบของฉันเสร็จใน Safari 4)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
วัตถุจะไม่ถูกลบตรวจสอบobj
การใช้งาน delete: delete obj.helloText
แล้วตรวจสอบfoo now foo is an empty object
delete
ไม่ได้มีไว้สำหรับการลบวัตถุใน javascript delete
ใช้สำหรับลบคีย์วัตถุในกรณีของคุณvar obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
วัตถุจะไม่ถูกลบตรวจสอบobj
ถัดไปเรียกใช้delete obj.helloText
แล้วคุณจะเห็นว่าfoo
ตอนนี้ชี้ไปที่ว่างเปล่า วัตถุ "" "