Kapsayan iki ana bölüm var var FOO = FOO || {};.
# 1 Geçersiz kılmaları önleme
Kodunuzun birden fazla dosyaya bölündüğünü ve iş arkadaşlarınızın da adlı bir Nesne üzerinde çalıştığını hayal edin FOO. Daha sonra birisinin önceden tanımladığı FOOve ona işlevsellik atadığı duruma yol açabilir (bir skateboardişlev gibi ). Zaten var olup olmadığını kontrol etmeseydiniz, onu geçersiz kılarsınız.
Sorunlu durum:
// 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!');
};
Bu durumda, skateboardJavaScript dosyasını HTML'nize homer.jssonradan bart.jsyüklerseniz, Homer yeni bir FOOnesne tanımladığından (ve böylece Bart'tan mevcut olanı geçersiz kıldığından), böylece yalnızca donutişlevi bildiğinden işlev kaybolacaktır .
Bu nedenle var FOO = FOO || {};, "FOO, FOO'ya (zaten mevcutsa) veya yeni bir boş nesneye (FOO zaten mevcut değilse) atanacak" anlamına gelecektir.
Çözüm:
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!');
};
Bart ve Homer şimdi varlığını kontrol Çünkü FOOonların yöntemlerini tanımlamak için önce yükleyebilir bart.jsve homer.js(onlar farklı adlar varsa) birbirlerinin yöntemlerini geçersiz olmadan herhangi bir sırada. Böylece her zaman FOOyöntemlere sahip bir nesne alacaksınızskateboard ve donut(Yaşasın!)
# 2 Yeni bir nesne tanımlama
İlk örneği okuduysanız, o zaman şimdiden || {} .
Çünkü eğer yoksa FOO nesne OR durumu aktif hale gelir ve yeni bir nesne oluşturur, böylece ona işlevler atayabilirsiniz. Sevmek:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};