2015-10-29 44 views
7

Są trzy sposoby tworzenia obiektów JavaScript:Simple Object porównaniu fabryce porównaniu konstruktor - praktyczny przykład

  1. prostu przez obiekt tworzący
  2. przez funkcję fabryce
  3. przez konstruktor

  1. Simple Object Creatio n:

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

    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. Konstruktor Funkcja:

    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); 
    

Może ktoś zapewniają proste ilustracje kiedy używać które z tych metod do tworzenia obiektów w prostych słowach, aby naiwna mogła również zrozumieć?

poszedłem za pośrednictwem następujących linków, ale jest to trochę skomplikowane do zrozumienia:

Więc pytam dla niektórych prostych przypadkach praktycznych .

+3

jestem też chcą zobaczyć konkretne przypadki dla powyższej wzmianki pytanie ☻ –

+1

Istnieje więcej sposobów tworzenia obiektów w JS , 'new'-keyword i' Object.create() ' –

+0

Czy możesz podać proste" fragmenty kodu "dla tych. To było by pomocne. Również do tej pory brak odpowiedzi.( – Deadpool

Odpowiedz

2

Użyj prostych obiektów dla danych: gdy potrzebujesz tylko pakietu par klucz/wartość.

W przykładzie prostego obiektu, masz więcej niż tylko dane: metoda salary dodaje zachowanie obiektu. Jeśli masz zamiar skończyć z wieloma takimi obiektami, to lepiej dla wydajności i łatwości konserwacji mieć tylko jedną metodę, która jest wspólna dla wszystkich obiektów, a nie dla każdego obiektu mającego własną metodę salary. Sposobem na udostępnienie metody między wieloma obiektami jest umieszczenie metody na prototypie obiektów.

Można użyć funkcji konstruktora, gdy trzeba utworzyć obiekt będący instancją prototypu. To jest dobre miejsce na przeczytanie tego, ale jest trochę gęsty: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

Powyższy odnośnik MDN demonstruje również składnię ECMAScript 2015 class, która jest alternatywą dla funkcji konstruktora.

Aktualizacja: Zobacz komentarz Dave Newtona za dobry przykład, kiedy używać fabryce

+3

Fabryki są użyteczne w tych samych okolicznościach, co inne języki OOP, np. jeśli zużywasz dane JSON i potrzebujesz danych/zachowania w oparciu o jakąś formę marker (udawaj, że to JSON): '{id: n, type: 'some_type', data: {whatever}}'. Jeśli masz wiele typów, potrzebujesz fabryki do generowania te behawioralne obiekty z nich, na przykład, typ może mieć własną implementację edytora. –

+0

Również, gdy nie potrzebujesz "tego", polecam używanie zwykłej funkcji lub statycznej metody zamiast metody instancji http://stackoverflow.com/a/29291666/2482570. Dla mnie tworzenie funkcji za pomocą metody instancji sygnalizuje, że zamierzasz użyć 'this'. W twoim przykładzie, 'const salary = x => x + 2500' byłoby dobrym sposobem na napisanie funkcji. –