Javascriptには、javascriptでクラス/名前空間を作成および管理するための明確な手法がいくつかあります。
ある技術と他の技術を使用する場合にどのような状況が必要かを知りたいです。私は1つを選んで、それを前進させたいです。
複数のチーム間で保守および共有されるエンタープライズコードを記述しますが、保守可能なjavascriptを記述する際のベストプラクティスを知りたいですか?
私は、自己実行型の匿名関数を好む傾向がありますが、これらの手法に対するコミュニティの投票がどういうものか興味があります。
プロトタイプ:
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
}
Self-Executing Anonymous FunctionはjQueryチームが使用するパターンであることに言及する必要があります。
更新
この質問をしたとき、私が理解しようとしていたことの重要性を本当に見ませんでした。目前の本当の問題は、newを使用してオブジェクトのインスタンスを作成するか、コンストラクター/ new
キーワードの使用を必要としないパターンを使用するかどうかです。
私の意見では、new
キーワードを使用しないパターンを使用する必要があるため、独自の回答を追加しました。
詳細については、私の答えをご覧ください。