2010-08-11 6 views
11

Ich habe über JavaScript die prototypische Natur fragen, und die Vorteile davon, und haben die folgende Liste kommen:Die Vorteile von JavaScript Prototype

1) Inheritance

cat.prototype = animal 

2) Speichereffizienz

a.prototype.b = function() {} 

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

Dann A1.b und a2.b ist im wesentlichen die gleiche objec t, wo wie:

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

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

a1.b und a2.b wären andere Funktionsobjekte und nehmen mehr Speicher auf.

3) Hinzufügen von Methoden/Feldern zu mehreren, bereits erstellten, "out in the wild" -Objekten.

var a = function() {} 

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

a.prototype.b = function() {} 

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

Die Frage ist also, diese sind richtig?

... und gibt es noch andere Vorteile, die ich verpasst habe?

Prost!

+0

gut begründete. Es ist im Grunde die Javascript-Version von Klasse vs. Instanzeigenschaften/Methoden –

Antwort

6

Das sind alle richtig.

Natürlich gibt es "Nachteile" auch:

Keine Verschlüsse

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

Vergleich mit:

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