Ada dua bagian utama yang var FOO = FOO || {};
menutupi.
# 1 Mencegah penggantian
Bayangkan Anda memiliki kode yang dibagi menjadi beberapa file dan rekan kerja Anda juga mengerjakan sebuah Object bernama FOO
. Maka itu bisa mengarah pada kasus bahwa seseorang sudah mendefinisikan FOO
dan menetapkan fungsionalitas padanya (seperti skateboard
fungsi). Kemudian Anda akan menimpanya, jika Anda tidak memeriksa apakah sudah ada.
Kasus bermasalah:
// Definition of co-worker "Bart" in "bart.js"
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker "Homer" in "homer.js"
var FOO = {};
FOO.donut = function() {
alert('I like donuts!');
};
Dalam hal ini skateboard
fungsi akan hilang jika Anda memuat file JavaScript homer.js
setelah bart.js
di HTML Anda karena Homer mendefinisikan FOO
objek baru (dan dengan demikian menimpa yang sudah ada dari Bart) sehingga hanya mengetahui tentang donut
fungsi tersebut.
Jadi, Anda perlu menggunakan var FOO = FOO || {};
yang artinya "FOO akan ditempatkan ke FOO (jika sudah ada) atau objek kosong baru (jika FOO belum ada).
Larutan:
var FOO = FOO || {};
// Definition of co-worker Bart in bart.js
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker Homer in homer.js
var FOO = FOO || {};
FOO.donut = function() {
alert('I like donuts!');
};
Karena Bart dan Homer sekarang memeriksa keberadaan FOO
sebelum mereka mendefinisikan metodenya, Anda dapat memuat bart.js
dan homer.js
dalam urutan apa pun tanpa menimpa metode satu sama lain (jika mereka memiliki nama yang berbeda). Jadi Anda akan selalu mendapatkan FOO
objek yang memiliki metode skateboard
dan donut
(Yay!).
# 2 Mendefinisikan objek baru
Jika Anda sudah membaca contoh pertama maka Anda sudah sekarang apa tujuan dari || {}
.
Karena jika tidak ada FOO
objek maka OR-case akan menjadi aktif dan membuat objek baru, sehingga Anda dapat menetapkan fungsinya. Suka:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};