Si bien JavaScript es un lenguaje orientado a objetos, no utiliza clases. No creas una "clase" en JavaScript. Usted crea un "prototipo". JavaScript se considera Prototype-based language.
El primer ejemplo se conoce como "object-literal notation" para la creación de un objeto (un subconjunto de los cuales es conocido popularmente como JSON). Una analogía de esto en los lenguajes basados en clases es una clase "estática", en el sentido de que no es necesario crear una nueva instancia de un objeto en este caso; "Solo existe", una vez que lo defines. No lo instanciaría, accedería a los miembros de apple
inmediatamente ya que apple
ya es un objeto. También es similar a crear una clase anónima en Java. Se podría utilizar de esta manera:
alert(apple.getInfo());
Con el segundo ejemplo, se está creando un prototipo (no una clase), que se puede utilizar para crear instancias de objetos de tipo Apple
. Se podía utilizar de esta manera:
var redDelicious = new Apple("Red Delicious");
alert(redDelicious.getInfo());
JavaScript le permite modificar y añadir al prototipo de un objeto, así que después de que declaró que su prototipo Apple
, todavía podría seguir añadiendo o cambiar las cosas en ello como esto:
Apple.prototype.size = "7cm";
Al hacer esto, todos los objetos derivados del prototipo Apple
obtendrán un campo size
. Esta es la base de cómo funciona el PrototypeJS framework para modificar objetos nativos de JavaScript para agregar & funcionalidad de reparación.
Tenga en cuenta que se considera una mala práctica modificar el prototipo de objetos JavaScript nativos, por lo que debe evitar hacerlo siempre que sea posible.
Usted solo está creando un objeto y no una clase. – Gumbo