O ile wiem, istnieją dwa główne sposoby tworzenia funkcji dla obiektu w javascript. Są to:Tworzenie funkcji dla obiektu w javascript
Metoda A, aby go w konstruktorze:
function MyObject() {
this.myFunc1 = function() {
...
}
this.myFunc2 = function() {
...
}
...
}
metoda B, dodaj go do prototypu:
function MyObject() {
...
}
MyObject.prototype.myFunc1 = function() {
...
}
MyObject.prototype.myFunc2 = function() {
....
}
Oczywiście jeśli nie:
MyObject.myFunc3 = function() {
....
}
, a następnie myFunc3
zostanie skojarzony z samym obiektem MyObject, a nie z żadnymi nowymi obiektami utworzonymi za pomocą new
słowo kluczowe. Dla jasności nazwiemy to metodą C, mimo że nie działa ona przy tworzeniu nowych obiektów za pomocą słowa kluczowego new
.
Chciałbym więc poznać różnice między nimi. O ile wiem, mają one ten sam efekt logicznie, nawet jeśli to, co dzieje się na maszynie, jest inne.
Jeśli miałbym zgadywać, powiedziałbym, że jedyną różnicą jest to, że definiując je w konstruktorze, jak w metodzie A, tworzy on zupełnie nowy obiekt funkcji dla każdego tworzonego obiektu, a metoda B zachowuje tylko jeden egzemplarz (w MyObject), że odnosi się do każdej chwili, kiedy zostanie wywołany. jeśli tak, dlaczego zrobiłbyś to w jedną stronę z drugiej strony? W przeciwnym razie, jaka jest różnica między metodą A i metodą B.
Możesz również tworzyć funkcje w obiektach takich jak [to] (http://jsfiddle.net/uwv5a/) –
przeczytaj o wzorze modułu: http://www.engfers.com/code/javascript-module-pattern/ – bryanmac
@CoreyFarwell, przypuszczam, że to w zasadzie to samo co metoda A, tak? –