W Javascript istnieje kilka wyraźnie widocznych technik tworzenia i zarządzania klasami / przestrzeniami nazw w javascript.
Jestem ciekawy, jakie sytuacje uzasadniają użycie jednej techniki w porównaniu do drugiej. Chcę wybrać jeden i trzymać się go z przodu.
Piszę kod korporacyjny, który jest utrzymywany i współdzielony przez wiele zespołów, i chcę wiedzieć, jaka jest najlepsza praktyka podczas pisania możliwego do utrzymania javascript?
Wolę samoczynne wykonywanie anonimowych funkcji, ale jestem ciekawy, co głosuje społeczność w sprawie tych technik.
Prototyp:
function obj()
{
}
obj.prototype.test = function() { alert('Hello?'); };
var obj2 = new obj();
obj2.test();
Samozamykająca się funkcja anonimowa:
//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
}
Uważam, że powinienem wspomnieć, że Self-Executing Anonymous Function to wzorzec używany przez zespół jQuery.
Aktualizacja
Kiedy zadałem to pytanie, naprawdę nie dostrzegłem znaczenia tego, co próbowałem zrozumieć. Prawdziwym problemem jest to, czy użyć nowego do tworzenia instancji swoich obiektów, czy też używać wzorców, które nie wymagają konstruktorów / użycia new
słowa kluczowego.
Dodałem własną odpowiedź, ponieważ moim zdaniem powinniśmy korzystać ze wzorów, które nie używają new
słowa kluczowego.
Aby uzyskać więcej informacji, zobacz moją odpowiedź.