Javascript'te, javascript'te sınıfları / ad alanlarını oluşturmak ve yönetmek için açıkça öne çıkan birkaç teknik vardır.
Bir durumu diğerine karşı hangi durumlarda kullanmak istediğini merak ediyorum. Bir tane seçip ilerlemeye devam etmek istiyorum.
Birden fazla ekip tarafından tutulan ve paylaşılan işletme kodunu yazıyorum ve korunabilir javascript yazarken en iyi uygulamanın ne olduğunu bilmek istiyorum?
Kendiliğinden Çalışan Anonim İşlevleri tercih etme eğilimindeyim, ancak topluluk oylarının bu tekniklerde ne olduğunu merak ediyorum.
Prototip:
function obj()
{
}
obj.prototype.test = function() { alert('Hello?'); };
var obj2 = new obj();
obj2.test();
Kendiliğinden Kapanan Anonim İşlev:
//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
}
Kendiliğinden Çalışan Anonim İşlev'in jQuery ekibi tarafından kullanılan kalıptan bahsetmem gerektiğini düşünüyorum.
Güncelle
Bu soruyu sorduğumda anlamaya çalıştığım şeyin önemini gerçekten görmedim. Eldeki asıl mesele nesnelerinizin örneklerini oluşturmak için yeniyi kullanıp kullanmamak veya new
anahtar kelime yapıcıları / kullanımı gerektirmeyen kalıpları kullanmaktır .
Kendi cevabımı ekledim, çünkü bence new
anahtar kelimeyi kullanmayan kalıpları kullanmalıyız .
Daha fazla bilgi için lütfen cevabımı görün.