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?
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?
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.
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.
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. –
To pytanie jest niejednoznaczne. Właściwość lib lub otaczcts? – user278064
Powinieneś prawdopodobnie przeczytać: [MDN - Wprowadzenie do JavaScript zorientowanego na obiekt] (https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript). –