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ığı FOO
ve ona işlevsellik atadığı duruma yol açabilir (bir skateboard
iş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, skateboard
JavaScript dosyasını HTML'nize homer.js
sonradan bart.js
yüklerseniz, Homer yeni bir FOO
nesne tanımladığından (ve böylece Bart'tan mevcut olanı geçersiz kıldığından), böylece yalnızca donut
iş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ü FOO
onların yöntemlerini tanımlamak için önce yükleyebilir bart.js
ve homer.js
(onlar farklı adlar varsa) birbirlerinin yöntemlerini geçersiz olmadan herhangi bir sırada. Böylece her zaman FOO
yö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!');
};