español ejemplos descargar definicion curso caracteristicas javascript

javascript - ejemplos - ¿Qué estilo usas para crear una "clase"?



javascript html (7)

Bueno, realmente no tengo una opinión experta sobre esto. Suelo terminar utilizando el enfoque basado en cierres solo porque mantiene el código más simple para el administrador. Pero, me he encontrado utilizando prototipos para métodos que tienen muchas líneas de código.

Hay algunas maneras de obtener un comportamiento de clase en JavaScript, el más común parece ser un prototipo basado en esto:

function Vector(x, y, x) { this.x = x; this.y = y; this.z = z; return this; } Vector.prototype.length = function () { return Math.sqrt(this.x * this.x ... ); }

y enfoques basados ​​en el cierre similares a

function Vector(x, y, z) { this.length = function() { return Math.sqrt(x * x + ...); } }

Por varias razones, esta última es más rápida, pero he visto (y con frecuencia escribo) la versión del prototipo y sentía curiosidad por saber qué hacen otras personas.


La asignación de funciones al prototipo es mejor (para los métodos públicos) porque todas las instancias de la clase compartirán la misma copia del método. Si asigna la función dentro del constructor como en el segundo ejemplo, cada vez que crea una nueva instancia, el constructor crea una nueva copia de la función de longitud y la asigna a esa única instancia.

Sin embargo, esta última técnica es útil si desea que cada copia tenga su propia copia, el uso principal de eso es hacer métodos privados / privilegios que tienen acceso a variables privadas declaradas dentro del constructor y heredadas a través del mecanismo de cierre.

Douglas Crockford tiene un buen resumen .


También tiene la opción de:

function Vector(x, y, z) { function length() { return Math.sqrt(x * x + ...); } }

Probablemente sea tan lento como el ejemplo dos, pero se parece más a Java / C # y es un poco más explícito.


Soy un gran fan de usar la biblioteca de John Resig para esto. Ligero, directo, y usted ya sabe cómo usarlo si está familiarizado con el estilo ''habitual'' orientado a objetos.


No hay clases en javascript.

Sin embargo hay objetos. No necesita una clase para crear un objeto en javascript. Tiene funciones constitutivas que puede invocar con nuevas, por ejemplo:

var james = new Person();

Puedes simular comportamientos de clase con:

prototipo ejemplo:

function Car (type) { this.type = type; this.color = "red"; } Car.prototype.getInfo = function() { return this.color + '' '' + this.type + '' car''; };

ejemplo literal del objeto

var car = { type: "honda", color: "red", getInfo: function () { return this.color + '' '' + this.type + '' car''; } }


También existe el enfoque literal del objeto para el prototipo:

var Vector = function(){}; Vector.prototype = { init:function(x,y,z) { this.x = x; this.y = y; this.z = z; }, length:function() { return Math.sqrt(x * x + ...); } }; var v1 = new Vector(); v1.init(1,2,3);