Es gibt zwei Hauptteile, die var FOO = FOO || {};
abdecken.
# 1 Überschreibungen verhindern
Stellen Sie sich vor, Sie haben Ihren Code auf mehrere Dateien aufgeteilt und Ihre Mitarbeiter arbeiten auch an einem Objekt namens FOO
. Dann könnte es zu dem Fall kommen, dass jemand bereits FOO
Funktionen definiert und zugewiesen hat (wie eine skateboard
Funktion). Dann würden Sie es überschreiben, wenn Sie nicht prüfen würden, ob es bereits existiert.
Problematischer Fall:
// 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 diesem Fall wird die skateboard
wird Funktion weg , wenn Sie die JavaScript - Datei laden , homer.js
nachdem bart.js
in Ihrem HTML , weil Homer ein neues definiert FOO
Objekt (und damit überschreibt die bestehenden von Bart) , so dass es nur über die weiß - donut
Funktion.
Sie müssen var FOO = FOO || {};
also Folgendes verwenden : "FOO wird FOO zugewiesen (sofern es bereits vorhanden ist) oder einem neuen leeren Objekt (falls FOO noch nicht vorhanden ist).
Lösung:
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!');
};
Da Bart und Homer sind nun für die Existenz der Überprüfung , FOO
bevor sie ihre Methoden definieren, können Sie laden bart.js
und homer.js
in beliebiger Reihenfolge ohne zwingende jeweils andere Methoden (wenn sie unterschiedliche Namen haben). Sie erhalten also immer ein FOO
Objekt mit den Methoden skateboard
und donut
(Yay!).
# 2 Ein neues Objekt definieren
Wenn Sie das erste Beispiel durchgelesen haben, dann wissen Sie schon jetzt, wozu das dient || {}
.
Wenn kein FOO
Objekt vorhanden ist, wird der ODER-Fall aktiv und erstellt ein neues Objekt, sodass Sie ihm Funktionen zuweisen können. Mögen:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};