जावास्क्रिप्ट में कक्षा / नामस्थान बनाने और प्रबंधित करने के लिए कुछ स्पष्ट रूप से प्रमुख तकनीकें हैं।
मैं उत्सुक हूं कि एक तकनीक बनाम दूसरे का उपयोग करके कौन सी परिस्थितियां वारंट करती हैं। मैं एक को चुनना चाहता हूं और इसके साथ आगे बढ़ना चाहता हूं।
मैं उद्यम कोड लिखता हूं जिसे कई टीमों में बनाए रखा जाता है और साझा किया जाता है, और मैं यह जानना चाहता हूं कि बनाए रखने योग्य जावास्क्रिप्ट लिखते समय सबसे अच्छा अभ्यास क्या है?
मैं सेल्फ-एक्ज़ीक्यूटिंग बेनामी फ़ंक्शंस को प्राथमिकता देता हूं, लेकिन मैं उत्सुक हूं कि इन तकनीकों पर समुदाय का वोट क्या है।
प्रोटोटाइप:
function obj()
{
}
obj.prototype.test = function() { alert('Hello?'); };
var obj2 = new obj();
obj2.test();
सेल्फ-क्लोजिंग बेनामी फंक्शन:
//Self-Executing Anonymous Function
(function( skillet, $, undefined ) {
//Private Property
var isHot = true;
//Public Property
skillet.ingredient = "Bacon Strips";
//Public Method
skillet.fry = function() {
var oliveOil;
addItem( "\t\n Butter \n\t" );
addItem( oliveOil );
console.log( "Frying " + skillet.ingredient );
};
//Private Method
function addItem( item ) {
if ( item !== undefined ) {
console.log( "Adding " + $.trim(item) );
}
}
}( window.skillet = window.skillet || {}, jQuery ));
//Public Properties
console.log( skillet.ingredient ); //Bacon Strips
//Public Methods
skillet.fry(); //Adding Butter & Fraying Bacon Strips
//Adding a Public Property
skillet.quantity = "12"; console.log( skillet.quantity ); //12
//Adding New Functionality to the Skillet
(function( skillet, $, undefined ) {
//Private Property
var amountOfGrease = "1 Cup";
//Public Method
skillet.toString = function() {
console.log( skillet.quantity + " " +
skillet.ingredient + " & " +
amountOfGrease + " of Grease" );
console.log( isHot ? "Hot" : "Cold" );
};
}( window.skillet = window.skillet || {}, jQuery ));
//end of skillet definition
try {
//12 Bacon Strips & 1 Cup of Grease
skillet.toString(); //Throws Exception
} catch( e ) {
console.log( e.message ); //isHot is not defined
}
मुझे लगता है कि मुझे यह उल्लेख करना चाहिए कि सेल्फ-एक्ज़ीक्यूटिंग बेनामी फ़ंक्शन jQuery टीम द्वारा उपयोग किया जाने वाला पैटर्न है।
अद्यतन
जब मैंने यह प्रश्न पूछा तो मुझे वास्तव में वह महत्व नहीं दिखाई दिया जो मैं समझने की कोशिश कर रहा था। हाथ में असली मुद्दा यह है कि अपनी वस्तुओं के उदाहरण बनाने के लिए या ऐसे पैटर्न का उपयोग करने के लिए नए का उपयोग करें या नहीं, जिन्हें निर्माणकर्ताओं / new
कीवर्ड के उपयोग की आवश्यकता नहीं है ।
मैंने अपना स्वयं का उत्तर जोड़ा, क्योंकि मेरी राय में हमें उन पैटर्नों का उपयोग करना चाहिए जो new
कीवर्ड का उपयोग नहीं करते हैं ।
अधिक जानकारी के लिए कृपया मेरा उत्तर देखें।