Ci sono due parti principali che var FOO = FOO || {};
copre.
# 1 Prevenire gli override
Immagina di avere il tuo codice suddiviso su più file e anche i tuoi colleghi stanno lavorando su un oggetto chiamato FOO
. Quindi potrebbe portare al caso che qualcuno abbia già definito FOO
e assegnato una funzionalità (come una skateboard
funzione). Quindi lo sovrascriveresti, se non stavi controllando se esiste già.
Caso problematico:
// 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!');
};
In questo caso la skateboard
funzione sparirà se carichi il file JavaScript homer.js
dopo bart.js
nel tuo HTML perché Homer definisce un nuovo FOO
oggetto (e quindi sovrascrive quello esistente da Bart) quindi conosce solo la donut
funzione.
Quindi è necessario utilizzare var FOO = FOO || {};
che significa "FOO verrà assegnato a FOO (se esiste già) o un nuovo oggetto vuoto (se FOO non esiste già).
Soluzione:
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!');
};
Poiché Bart e Homer ora stanno verificando l'esistenza di FOO
prima di definire i loro metodi, puoi caricare bart.js
e homer.js
in qualsiasi ordine senza sovrascrivere i metodi dell'altro (se hanno nomi diversi). Quindi otterrai sempre un FOO
oggetto che ha i metodi skateboard
e donut
(Yay!).
# 2 Definizione di un nuovo oggetto
Se hai letto il primo esempio, hai già capito qual è lo scopo del file || {}
.
Perché se non c'è un FOO
oggetto esistente , il caso OR diventerà attivo e creerà un nuovo oggetto, così potrai assegnargli delle funzioni. Piace:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};