2010-08-11 9 views
11

Me he estado preguntando acerca de la naturaleza de prototipos de JavaScript, y los beneficios de la misma, y ​​han llegado a la siguiente lista:Los beneficios de JavaScript Prototype

1) Herencia

cat.prototype = animal 

2) eficiencia de la memoria

a.prototype.b = function() {} 

var a1 = new a(); 
var a2 = new a(); 

Entonces A1.b y A2.b son esencialmente los mismos objec t, donde as:

var a = function() { 
      this.b = function() {}; 
     } 

var a1 = new a(); 
var a2 = new a(); 

a1.b y a2.b serían objetos de funciones diferentes y ocuparían más memoria.

3) Agregando métodos/campos a objetos múltiples, ya creados, 'out in the wild'.

var a = function() {} 

var a1 = new a(); 
var a2 = new a(); 

a.prototype.b = function() {} 

a1.b(); 
a2.b(); 

Entonces la pregunta es, ¿son correctos?

... y ¿hay algún otro beneficio que me haya perdido?

¡Salud!

+0

bien razonadas. es básicamente la versión de Javascript de la clase frente a las propiedades/métodos de la instancia –

Respuesta

6

Todos son correctos.

Por supuesto, hay "inconvenientes", así:

No cierres

function a() { 
    var ival = 0; 
    this.start = function(){ ival = setInterval(function(){ }, 300); } 
    this.finish = function(){ clearTimeout(ival); } 
} 

Comparar con:

function a() { 
    this.ival = 0; 
} 
a.prototype.start = function(){ this.ival = setInterval(function(){ }, 300); } 
a.prototype.finish = function(){ clearTimeout(this.ival); } 
Cuestiones relacionadas