2010-08-11 4 views
11

Je me demandais sur la nature prototypique de JavaScript, et les avantages de celui-ci, et je suis descendu à la liste suivante:Les avantages de JavaScript Prototype

1) Héritage

cat.prototype = animal 

2) efficacité mémoire

a.prototype.b = function() {} 

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

Ensuite a1.b et a2.b sont essentiellement les mêmes objec t, où:

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

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

a1.b et a2.b seraient des objets de fonction différents et prendraient plus de mémoire.

3) Ajout de méthodes/champs à plusieurs, déjà créé, « dans la nature » des objets.

var a = function() {} 

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

a.prototype.b = function() {} 

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

Alors la question est, sont-ils corrects?

... et y at-il d'autres avantages que j'ai manqués?

À la votre!

+0

bien raisonnée. c'est essentiellement la version Javascript de la classe par rapport aux propriétés/méthodes de l'instance –

Répondre

6

Tout est correct.

Bien sûr, il y a des "inconvénients" ainsi:

Aucune fermeture

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

Comparer à:

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