Di Javascript ada beberapa teknik yang jelas menonjol untuk membuat dan mengelola kelas / ruang nama dalam javascript.
Saya ingin tahu situasi apa yang perlu menggunakan satu teknik vs yang lain. Saya ingin memilih satu dan tetap menggunakannya.
Saya menulis kode perusahaan yang dikelola dan dibagikan di banyak tim, dan saya ingin tahu apa praktik terbaik saat menulis javascript yang bisa dikelola?
Saya cenderung memilih Fungsi Anonim yang Dapat Dilakukan Sendiri, tetapi saya ingin tahu apa suara masyarakat mengenai teknik-teknik ini.
Prototipe:
function obj()
{
}
obj.prototype.test = function() { alert('Hello?'); };
var obj2 = new obj();
obj2.test();
Fungsi Anonim Menutup Sendiri:
//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
}
Saya merasa bahwa saya harus menyebutkan bahwa Fungsi Anonim Mengeksekusi Sendiri adalah pola yang digunakan oleh tim jQuery.
Pembaruan
Ketika saya mengajukan pertanyaan ini, saya tidak benar-benar melihat pentingnya apa yang saya coba pahami. Masalah sebenarnya yang dihadapi adalah apakah menggunakan baru atau tidak untuk membuat instance objek Anda atau menggunakan pola yang tidak memerlukan konstruktor / penggunaan new
kata kunci.
Saya menambahkan jawaban saya sendiri, karena menurut saya kita harus menggunakan pola yang tidak menggunakan new
kata kunci.
Untuk informasi lebih lanjut silakan lihat jawaban saya.