มีสองส่วนหลักที่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!');
};