Sto provando a determinare le regole per la generazione dei nomi di classe in javascript. Ho incollato questo script in Chrome strumenti dev console:Come vengono calcolati i nomi delle classi javascript per le classi personalizzate in Chrome Dev Tools?
var obj = {
Constr : function() { }
};
var obj2 = obj;
console.log(new obj.Constr());
console.log(new obj2.Constr());
obj2.Constr2 = function() { };
console.log(new obj.Constr2());
console.log(new obj2.Constr2());
Ed ecco i risultati nella console:
obj.Constr
obj.Constr
obj2.Constr2
obj2.Constr2
Sembra che il nome della classe è determinato dalla variabile che la funzione di costruzione è stato originariamente assegnato a Sto cercando le regole precise che CDT usa per generare questo nome. Inoltre, questo è lo stesso nome riconosciuto dal compilatore Google Closure?
Ho provato a vedere se riesco a riprodurre un comportamento simile in Firebug, ma non riesco a ottenere i nomi delle classi da stampare nella console. Come domanda secondaria, qualcuno sa come vedere questo in firebug?
Quindi, come temevo, il nome stampato da CDT non deriva dalle specifiche ecmascript. È solo una comodità di debug per lo sviluppatore. Sono abbastanza nuovo in Javascript e generalmente mi piace lo stile prototipo, ma trovo deludente che librerie come dojo ed extjs provano a calzare in stile OO di programmazione. Penso che questo confonda una delle migliori caratteristiche di Javascript. –
Javascript è un linguaggio _very_ OO e in effetti è piuttosto flessibile. Ci sono molte librerie che costruiscono un tipico OO basato su classi _ su top_ di Javascript, e che di solito funziona abbastanza bene. Questo non è necessariamente un problema per entrambe le librerie o JavaScript stesso. – lanzz