2015-10-29 22 views
7

Ci sono tre modi per creare oggetti in JavaScript:Simple Object vs fabbrica vs Constructor - Esempio pratico

  1. da semplice oggetto creando
  2. per funzione di fabbrica
  3. dalla Funzione di costruzione

  1. Oggetto semplice Creatio n:

    var ronaldo = { 
        name: "Ronaldo", 
        age: "35", 
        quote: "Hi I am Ronaldo", 
        salary: function(x){ return x+2500; } 
    }; 
    
  2. fabbrica Funzione:

    function human(x,y,z,i){ 
        return{ 
         name: x, 
         age: y, 
         quote: z, 
         salary: function(i){ return i+2500; } 
        } 
    }; 
    var Zini = human('Zenidan','41','I am Zidane',7500); 
    
  3. Costruttore Funzione:

    var human = function(x,y,z,i){ 
        this.name = x, 
        this.age = y, 
        this.quote = z, 
        this.salary = function(i){ return i+2500; } 
    }; 
    var Lampd = new human('Frank Lampard','39','I am Frank J Lampard',5500); 
    

Qualcuno può fornire semplici illustrazioni di quando usare quale di questi metodi per creare oggetti in termini semplici, così che anche un ingenuo possa capire?

sono andato attraverso i seguenti link, ma è un po 'complicato da capire:

Così mi sto chiedendo alcune semplici casi pratici .

+3

Sono anche voglio vedere casi pratici per domanda di cui sopra menzione ☻ –

+1

Non ci sono altri modi per creare oggetti in JS , 'new'-keyword e' Object.create() ' –

+0

Puoi fornire semplici 'code snippents' per quelli. Sarebbe utile. Inoltre, nessuna risposta finora.; ( – Deadpool

risposta

2

Utilizzare oggetti semplici per i dati: quando tutto ciò che serve è un fascio di coppie chiave/valore.

Nell'esempio di un oggetto semplice, si dispone di più di un semplice dato: il metodo salary aggiunge un comportamento all'oggetto. Se hai intenzione di finire con molti oggetti del genere, è meglio per prestazioni e manutenibilità avere solo un metodo salary condiviso tra tutti gli oggetti, piuttosto che ogni oggetto che ha il proprio metodo salary. Un modo per condividere un metodo tra molti oggetti è mettere il metodo su un prototipo degli oggetti.

È possibile utilizzare una funzione di costruzione quando è necessario creare un oggetto che è un'istanza di un prototipo. Questo è un buon posto per leggerlo, ma è un po 'denso: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

Il link MDN sopra mostra anche la sintassi ECMAScript 2015 class, che è un'alternativa alle funzioni del costruttore.

Aggiornamento: Si veda il commento di Dave Newton per un buon esempio di quando utilizzare una fabbrica

+3

Le fabbriche sono utili nelle stesse circostanze degli altri linguaggi OOP, ad esempio, se si stanno consumando dati JSON e sono necessari dati/comportamenti basati su una qualche forma di marker (si supponga che questo sia JSON): '{id: n, type: 'some_type', data: {whatever}}'. Se si hanno più tipi, è necessario che una factory generi gli oggetti comportamentali da loro, per esempio, un tipo potrebbe avere la propria implementazione editoriale. –

+0

Inoltre, quando non è necessario "questo", si consiglia di utilizzare una funzione normale o un metodo statico anziché un metodo di istanza http://stackoverflow.com/a/29291666/2482570. Per me, facendo una funzione, un metodo di istanza segnala che intendi usare 'this'. Nel tuo esempio, 'const salary = x => x + 2500' sarebbe un buon modo per scrivere la funzione. –