Estoy tratando de determinar las reglas para generar nombres de clase en javascript. Pegué este script en Chrome herramientas dev consola:¿Cómo se calculan los nombres de las clases javascript para clases personalizadas en Herramientas de desarrollo de Chrome?
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());
Y son los resultados en la consola aquí:
obj.Constr
obj.Constr
obj2.Constr2
obj2.Constr2
Parece ser que el nombre de la clase está determinada por la variable que la función constructora fue asignado originalmente a. Estoy buscando las reglas precisas que utiliza CDT para generar este nombre. Además, ¿es este el mismo nombre que reconoce Google Closure Compiler?
He intentado ver si puedo reproducir un comportamiento similar en Firebug, pero parece que no puedo obtener nombres de clases para imprimir en la consola. Como una pregunta secundaria, ¿alguien sabe cómo ver esto en Firebug?
Así que, como temía, el nombre impreso por CDT no proviene de las especificaciones de ecmascript. Es solo una conveniencia de depuración para el desarrollador. Soy bastante nuevo en Javascript y, en general, me gusta el estilo de prototipo, pero me parece decepcionante que bibliotecas como dojo y extjs intenten calzarse en el estilo de programación OO. Creo que esto confunde una de las mejores características de Javascript. –
Javascript es un lenguaje muy original, y en realidad es bastante flexible. Hay muchas bibliotecas construyendo un OO típico basado en clase _en la parte superior_ de Javascript, y eso generalmente funciona bastante bien. Esto no es necesariamente malo para esas bibliotecas o el Javascript mismo. – lanzz