2011-09-05 15 views
5

ho fatto una discreta quantità di programmazione in JavaScript/JQuery.Quando dovrei usare "prototype" in JavaScript

Ma non ho mai usato "prototipo". In effetti, non ho idea di cosa significhi.

Avete un esempio pratico quando è utile?

+5

Potrebbe significare 2 cose: un framework javascript e un metodo javascript per estendere e definire gli oggetti. I due sono completamente diversi. Non sei sicuro di quale delle due intendi. –

+0

Questa domanda è ambigua. La proprietà lib o obejcts? – user278064

+1

Probabilmente dovresti leggere: [MDN - Introduzione al codice JavaScript orientato agli oggetti] (https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript). –

risposta

9

più semplice esempio:

function Foo() { 
    this.bar = function() { 
     return 42; 
    } 
} 

Ora è possibile creare il numero di casi di Foo come si desidera e chiamare bar():

var a = new Foo(); 
var b = new Foo(); 

Anche sebbene entrambi gli oggetti abbiano lo bar() metodo che è esattamente lo stesso in entrambi i casi, questi sono metodi distinti. In effetti, ogni nuovo oggetto Foo avrà una nuova copia di questo metodo.

D'altra parte:

function Foo() {} 
Foo.prototype.bar = function() { 
    return 42; 
}  

ha lo stesso risultato finale ma la funzione è memorizzata solo una volta in oggetto prototype piuttosto che in un oggetto stesso. Questo potrebbe essere un problema con l'offerta se crei tonnellate di istanze di Foo e vuoi risparmiare un po 'di memoria.

2

si Supponendo che stanno chiedendo circa Object.prototype,

Tutti gli oggetti in JavaScript discendono da Object; tutti gli oggetti ereditano metodi e proprietà da Object.prototype, sebbene possano essere sovrascritti. Ad esempio, i prototipi di altri costruttori sovrascrivono la proprietà del costruttore e forniscono i propri metodi toString. Le modifiche all'oggetto prototipo Object vengono propagate a tutti gli oggetti a meno che le proprietà e i metodi soggetti a tali modifiche non vengano sovrascritti ulteriormente lungo la catena del prototipo.

Leggi this e poi probabilmente this

Problemi correlati