มีสองส่วนหลักที่var FOO = FOO || {};ครอบคลุม
# 1 การป้องกันการลบล้าง
FOOลองนึกภาพคุณต้องแยกรหัสของคุณในช่วงหลายไฟล์และเพื่อนร่วมงานของคุณนอกจากนี้ยังมีการทำงานเกี่ยวกับวัตถุที่เรียกว่า จากนั้นอาจนำไปสู่กรณีที่มีผู้กำหนดFOOและกำหนดฟังก์ชันการทำงานให้แล้ว (เช่นskateboardฟังก์ชัน) จากนั้นคุณจะลบล้างหากคุณไม่ได้ตรวจสอบว่ามีอยู่แล้วหรือไม่
กรณีที่มีปัญหา:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};
var FOO = {};
FOO.donut = function() {
alert('I like donuts!');
};
ในกรณีนี้skateboardฟังก์ชันจะหายไปหากคุณโหลดไฟล์ JavaScript homer.jsหลังจากbart.jsใน HTML ของคุณเนื่องจากโฮเมอร์กำหนดFOOอ็อบเจ็กต์ใหม่(และแทนที่อ็อบเจ็กต์ที่มีอยู่จาก Bart) ดังนั้นจึงรู้เฉพาะเกี่ยวกับdonutฟังก์ชันเท่านั้น
ดังนั้นคุณต้องใช้var FOO = FOO || {};ซึ่งหมายความว่า "FOO จะถูกกำหนดให้กับ FOO (ถ้ามีอยู่แล้ว) หรือวัตถุเปล่าใหม่ (หากไม่มี FOO อยู่แล้ว)
วิธีการแก้:
var FOO = FOO || {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};
var FOO = FOO || {};
FOO.donut = function() {
alert('I like donuts!');
};
เนื่องจากขณะนี้บาร์ตและโฮเมอร์กำลังตรวจสอบการมีอยู่ของFOOก่อนที่จะกำหนดวิธีการของพวกเขาคุณสามารถโหลดbart.jsและhomer.jsเรียงลำดับใด ๆ โดยไม่ต้องแทนที่วิธีการของกันและกัน (หากมีชื่อต่างกัน) ดังนั้นคุณจะได้รับFOOวัตถุที่มีวิธีการskateboardและdonut(เย้!)
# 2 การกำหนดวัตถุใหม่
หากคุณได้อ่านตัวอย่างแรกตอนนี้คุณมีจุดประสงค์ของไฟล์|| {}.
เนื่องจากถ้าไม่มีFOOวัตถุอยู่แล้ว OR-case จะทำงานและสร้างวัตถุใหม่ขึ้นมาดังนั้นคุณจึงสามารถกำหนดฟังก์ชันให้กับมันได้ ชอบ:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};