¿Cómo puedo emular las clases (y los espacios de nombres) en JavaScript?¿Cómo puedo emular "clases" en JavaScript? (con o sin una biblioteca de terceros)
Necesito crear una biblioteca de JavaScript y tengo experiencia limitada con el idioma. Siempre pensé que tenía soporte nativo para las clases, pero está menos relacionado con Java de lo que había supuesto. Parece que todo en JavaScript es en realidad una función.
Lo que he descubierto hasta ahora tiene mucho sentido, ya que es un lenguaje dinámico débilmente tipado, pero esto lo hace un poco diferente para las personas que están acostumbradas a tener un lenguaje fuertemente tipado y usar un compilador para detectar nuestros errores :)
Principalmente trabajo en C# y Java, y esperaba algo sintácticamente similar para que la biblioteca se vea familiar para nuestros otros desarrolladores de C# que tendrán que mantenerla.
Tengo el siguiente tipo de código que funciona, pero me preguntaba qué otras tomas de desarrollador serían sobre esto. ¿Cuáles son las alternativas? ¿Hay alguna manera que sea mejor? ¿Hay alguna manera que sea más legible?
Entiendo que lo que quiero es algo similar a C# o Java cuando debería aceptar el hecho de que es JavaScript, pero mi objetivo es facilitar la curva de aprendizaje para otros desarrolladores haciéndolo más familiar e intuitivo para ellos.
//Perform the namespace setup (this will actually be done with checking
//in real life so we don't overwrite definitions, but this is kept short
//for the code sample).
var DoctaJonez = new function();
DoctaJonez.Namespace1 = new function();
/**
* Class description.
*/
DoctaJonez.Namespace1.SomeClass = function()
{
/**
* Public functions listed at the top to act like a "header".
*/
this.publicFunction = privateFunction;
/**
* Private variables next.
*/
var privateVariable;
/**
* Finally private functions.
*/
function privateFunction()
{
}
}
//Create an instance of the class
var myClass = new DoctaJonez.SomeClass();
//Do some stuff with the instance
myClass.publicFunction();
No sabía que pudieras hacer eso, eso se ve mucho más elegante. Gracias por la entrada :) +1 –