Il y a deux parties principales qui var FOO = FOO || {};
couvrent.
# 1 Empêcher les remplacements
Imaginez que votre code soit divisé sur plusieurs fichiers et que vos collègues travaillent également sur un objet appelé FOO
. Ensuite, cela pourrait conduire au cas où quelqu'un a déjà défini FOO
et affecté des fonctionnalités (comme une skateboard
fonction). Ensuite, vous le remplaceriez, si vous ne vérifiiez pas s'il existe déjà.
Cas problématique:
// 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!');
};
Dans ce cas, la skateboard
fonction disparaîtra si vous chargez le fichier JavaScript homer.js
après bart.js
dans votre HTML car Homer définit un nouvel FOO
objet (et remplace donc celui existant de Bart) afin qu'il ne connaisse que la donut
fonction.
Vous devez donc utiliser var FOO = FOO || {};
ce qui signifie "FOO sera assigné à FOO (s'il existe déjà) ou à un nouvel objet vide (si FOO n'existe pas déjà).
Solution:
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!');
};
Parce que Bart et Homer vérifient maintenant l'existence de FOO
avant de définir leurs méthodes, vous pouvez charger bart.js
et homer.js
dans n'importe quel ordre sans remplacer les méthodes de l'autre (si elles ont des noms différents). Ainsi, vous obtiendrez toujours un FOO
objet qui a les méthodes skateboard
et donut
(Yay!).
# 2 Définition d'un nouvel objet
Si vous avez lu le premier exemple, alors vous savez déjà quel est le but du || {}
.
Parce que s'il n'y a pas d' FOO
objet existant, le cas OR deviendra actif et créera un nouvel objet, vous pouvez donc lui attribuer des fonctions. Comme:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};