2012-06-10 12 views
8

Eventuali duplicati:
How to “properly” create a custom object in JavaScript?Come creare oggetti personalizzati in Javascript?

Scusate se questo è stato risposto prima, ma io sono un po 'sopraffatto dalla quantità di scelte offerti di essere per quanto riguarda la creazione di oggetti personalizzati in Javascript . Non sono sicuro dei rispettivi punti di forza o di debolezza o del fatto che differiscano o meno.

Ecco alcuni dei diversi modi che ho trovato per costruire oggetti:

1: nuovo oggetto

person = new Object() 
person.name = "Tim Scarfe" 
person.height = "6Ft" 

person.run = function() { 
    this.state = "running" 
    this.speed = "4ms^-1" 
} 

2: notazione letterale

timObject = { 
    property1 : "Hello", 
    property2 : "MmmMMm", 
    property3 : ["mmm", 2, 3, 6, "kkk"], 
    method1 : function(){alert("Method had been called" + this.property1)} 
}; 

3 : Funzioni

function AdBox() { 
    this.width = 200; 
    this.height = 60; 
    this.text = 'default ad text'; 
    this.prototype.move = function() { 
     // code for move method goes here 
    } 
} 
this.prototype.display = function() { 
    // code 
} 

Ho visto anche altri modi ma sembravano meno comuni .. Come puoi vedere non sono esattamente sicuro di quale sia lo standard quando qualcuno vuole un oggetto semplice con campi e metodi.

Grazie per la lettura.

+1

nella funzione 'AdBox', dovrebbe essere' this.move = function' not 'this.prototype.move = function'. – zzzzBov

+0

@zzzzBov: Sì, ho appena copiato e incollato da [qui] (http://javascript.about.com/library/bltut35.htm). Hanno detto che potrebbe essere fatto in entrambi i modi, ma ci sono differenze. –

+2

http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript#1598077 – zerkms

risposta

1

La prima e la seconda opzione sono funzionalmente identiche. La maggior parte degli sviluppatori sceglie di usare la notazione letterale perché è un po 'più breve.

La terza opzione viene generalmente utilizzata solo quando si desidera creare oggetti riutilizzabili (ad esempio l'ereditarietà). In questo caso, la funzione agisce come un "costruttore" - che è una funzione che restituisce una nuova istanza di oggetto che può ereditare metodi e proprietà definiti nel prototipo del costruttore.

+0

Quale parte dice che è "buona pratica" non usare la parola chiave 'new'? Dovrei essere in disaccordo con quel consiglio. –

+0

Spara che hai ragione il link sbagliato. Lo aggiorno dopo aver trovato il link corretto (che non era usato per * nuovo oggetto() *). Mi dispiace averlo erroneamente inserito nel mio commento originale (cancellato). –

Problemi correlati