2010-08-10 22 views
13

¿Cuál es la diferencia entrediferencia entre una clase y un objeto en Javascript

var myView = function() { 
//something goes here 
}; 

y

var myView = function() { 
//something goes here 
    return { 
     a: x, 
     b: y 
}(); 

Creo que el primer fragmento de código crea una clase "dinámica", por lo que se puede decir

var anotherView = new myView(); 

y el segundo fragmento es similar a un objeto "dinámico" singleton, pero no estoy muy seguro.

Respuesta

11

Javascript usa la herencia prototípica, por lo que son no hay clases per se. Todo es un objeto; es solo que algunos objetos tienen un objeto primario común cuyos métodos/variables se encontrarán cuando la resolución del nombre busque la cadena del prototipo.

Su primer fragmento de código crea un objeto llamado myView cuyo tipo es una función. Su segundo fragmento define un método anónimo que devuelve un objeto (con dos propiedades, a y b) y llama inmediatamente a este método, asignando el resultado al myView. Entonces, en este segundo caso, myView es un objeto con dos propiedades autodefinidas.

Puede que le ayude leer la descripción de prototypal inheritance in Javascript de Douglas Crockford, ya que parece que está un poco confundido con los detalles.

+0

Soy consciente de que no hay clases en JS, y utilicé el término 'clase' en un sentido amplio: ¡error! Sin embargo, habiendo dicho eso, gracias por la explicación. – JamieJag

2

No hay clases en javascript.

Como mencionó, su primer ejemplo sería para un objeto reutilizable, mientras que su segundo ejemplo es solo para un objeto singleton.

La principal diferencia aquí es que está invocando esa función inmediatamente en el segundo ejemplo y le devuelve un objeto, mientras que necesita invocar explícitamente la primera función cada vez usando algo como a=new myView() es el() que proporciona esa invocación.

uso el segundo ejemplo (conocido como el diseño del módulo de Crockford) por una de las tareas relacionados con la página, y el primer ejemplo de componentes reutilizables dentro de esa página (algún elemento generó muchas veces con los manipuladores, etc.)

también Lea sobre la herencia protoypal para que pueda entender cómo usar efectivamente el primer ejemplo para escribir mejor el código javascript.

+0

ECMA 2015 Clase presentada en js –

Cuestiones relacionadas