자바 스크립트에는 자바 스크립트에서 클래스 / 네임 스페이스를 만들고 관리하기위한 몇 가지 분명한 기술이 있습니다.
어떤 기술이 다른 기술과 비교하여 어떤 상황이 필요한지 궁금합니다. 하나를 골라 앞으로 나아가고 싶습니다.
여러 팀에서 유지 관리 및 공유되는 엔터프라이즈 코드를 작성하고 유지 관리 가능한 자바 스크립트를 작성할 때 모범 사례가 무엇인지 알고 싶습니다.
나는 자체 실행 익명 기능을 선호하는 경향이 있지만 이러한 기술에 대한 커뮤니티 투표가 궁금합니다.
프로토 타입 :
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
키워드를 사용하지 않는 패턴을 사용해야하기 때문에 내 자신의 대답을 추가했습니다 .
자세한 내용은 내 답변을 참조하십시오.