2011-09-05 12 views
5

Zrobiłem sporo programowania w JavaScript/JQuery.Kiedy należy używać "prototypu" w JavaScript

Ale nigdy nie użyłem "prototypu". W rzeczywistości nie mam zielonego pojęcia, co to znaczy.

Czy masz praktyczny przykład, kiedy jest przydatny?

+5

Może to oznaczać 2 rzeczy: strukturę javascript i javascriptową metodę rozszerzania i definiowania obiektów. Te dwie są zupełnie inne. Nie jestem pewien, który z tych dwóch masz na myśli. –

+0

To pytanie jest niejednoznaczne. Właściwość lib lub otaczcts? – user278064

+1

Powinieneś prawdopodobnie przeczytać: [MDN - Wprowadzenie do JavaScript zorientowanego na obiekt] (https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript). –

Odpowiedz

9

Najprostszy przykład:

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

Teraz można utworzyć dowolną liczbę wystąpień Foo jak chcesz i zadzwoń bar():

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

Nawet chociaż oba obiekty mają bar() metoda, która jest dokładnie taka sama w obu przypadkach, są to różne metody. W rzeczywistości każdy nowy obiekt Foo będzie miał nową kopię tej metody.

Z drugiej strony:

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

ma ten sam efekt końcowy, ale funkcja ta jest przechowywana tylko raz w obiekcie prototype niż w samego obiektu. To może być wyłącznik umowy, jeśli tworzysz mnóstwo instancji Foo i chcesz zaoszczędzić trochę pamięci.

2

Zakładając Pytasz o Object.prototype,

wszystkich obiektów w JavaScript są potomkami obiektu; wszystkie obiekty dziedziczą metody i właściwości z Object.prototype, chociaż mogą być nadpisane. Na przykład prototypy innych konstruktorów zastępują właściwość constructor i udostępniają własne metody toString. Zmiany obiektu prototypu Object są propagowane do wszystkich obiektów, chyba że właściwości i metody podlegające tym zmianom zostaną nadpisane dalej wzdłuż łańcucha prototypów.

Czytaj this a następnie prawdopodobnie this

Powiązane problemy