var FOO = FOO || {};
कवर करने वाले दो मुख्य भाग हैं।
# 1 ओवरराइडिंग को रोकना
कल्पना करें कि आपके पास कई फाइलों पर आपका कोड विभाजित है और आपके सहकर्मी भी नामक ऑब्जेक्ट पर काम कर रहे हैं FOO
। तब यह इस मामले को जन्म दे सकता है कि किसी ने पहले से ही FOO
इसे परिभाषित किया है और इसे (एक skateboard
फ़ंक्शन की तरह ) कार्यक्षमता प्रदान की है। तब आप इसे ओवरराइड करेंगे, यदि आप जाँच नहीं कर रहे थे कि क्या यह पहले से मौजूद है।
समस्यात्मक मामला:
// 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!');
};
skateboard
यदि आप अपने HTML में जावास्क्रिप्ट फ़ाइल homer.js
को लोड करते हैं तो इस स्थिति में फ़ंक्शन चला जाएगा bart.js
क्योंकि होमर एक नई FOO
वस्तु को परिभाषित करता है (और इस प्रकार बार्ट से मौजूदा को ओवरराइड करता है) इसलिए यह केवल donut
फ़ंक्शन के बारे में जानता है ।
इसलिए आपको var FOO = FOO || {};
इसका उपयोग करने की आवश्यकता है जिसका अर्थ है "FOO को FOO को सौंपा जाएगा (यदि यह पहले से मौजूद है) या एक नई रिक्त वस्तु (यदि FOO पहले से मौजूद नहीं है)।
उपाय:
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!');
};
क्योंकि बार्ट और होमर अब FOO
अपने तरीकों को परिभाषित करने से पहले अपने अस्तित्व की जाँच कर रहे हैं , आप एक-दूसरे के तरीकों (यदि उनके अलग-अलग नाम हैं) को ओवरराइड किए बिना लोड कर सकते हैं bart.js
और कर सकते हैं homer.js
। तो आपको हमेशा एक FOO
वस्तु मिलेगी जिसमें विधियाँ हैं skateboard
और donut
(याय!)।
# 2 एक नई वस्तु को परिभाषित करना
यदि आपने पहले उदाहरण के माध्यम से पढ़ा है तो आप पहले से ही अब इसका उद्देश्य क्या है || {}
।
क्योंकि यदि कोई विद्यमान FOO
वस्तु नहीं है, तो OR-case सक्रिय हो जाएगा और एक नई वस्तु बनाता है, इसलिए आप इसे कार्य सौंप सकते हैं। पसंद:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};