2013-02-19 10 views
5

I były wspaniałe opis semantycznej różnicy właściwości i metody (parafrazowane poprzez http://www.webdeveloper.com/forum/showthread.php?133712-Properties-Vs.-Methods)Przykład właściwości w porównaniu z metodami w JS

właściwości są jak rzeczowników. Mają wartość lub stan.

Metody są jak czasowniki. Wykonują działania.

Właściwość nie może wykonać akcji, a jedyną wartością, jaką ma ta metoda, jest ta, która jest zwracana po zakończeniu wykonywania działania.

np.

Własność: drzwi; Możliwe wartości: otwarte, zamknięte

Metoda: opendoor; Action: aby zmienić wartość właściwości drzwi do „otwierania”

Tworzenie przykład: Rozumiem to w teorii, ale nie mogę wymyślić przykład. Czy byłoby możliwe pokazanie mi, jak drzwi/openDoor będą wyglądać w rzeczywistym kodzie JavaScript?

+0

Jesteś pewnie przed siebie; powinieneś najpierw przeczytać na temat [Programowanie obiektowe] (http://en.wikipedia.org/wiki/Object-oriented_programming), ponieważ twoje pytanie nie dotyczy JavaScript. Jeśli rozróżnienie między danymi i funkcjami również jest dla ciebie niejasne, powinieneś wykonać jeszcze więcej kopii zapasowej. – lanzz

+1

Ponadto, myślę, że rozróżnienie tak naprawdę nie odnosi się w szczególności do JS, ponieważ * metoda * jest tylko funkcją zapisaną w właściwości (niejawnie pobierając kontekst funkcji ustawiony na obiekt podczas wywoływania go jako metodę). – Yoshi

+1

Nie muszę się szczególnie zwracać do JS, aby zastanowić się, jak to działa w danym języku, którego się aktualnie uczę. Doceniam linki i porady, przejrzę je. Co staram się zrozumieć to semantyka JS, ** jak to napisać **, to także ważna część procesu. Każdy ma swój własny styl uczenia się i to naprawdę pomogłoby mi zrozumieć JS. – jon

Odpowiedz

14

Naprawdę, musisz wykonać kopię zapasową niektórych linków powyżej. Ale jako szybki przykład:

var house = {} ; 

house.isDoorOpen = false ; 

house.openDoor = function(){ 
    house.isDoorOpen = true ; 
} 

Tutaj jest obiekt house. Ma właściwość: house.isDoorOpen. Tutaj jest to bardziej przymiotnik. Albo drzwi są otwarte (prawda), albo zamknięte (fałsz). Jak się wydaje, opisuje ona właściwość domu.

Posiada również metodę openDoor (która jest używana w następujący sposób: house.openDoor()). To jest coś, co może zrobić. W tym przypadku działanie openDoor wpływa na właściwość isDoorOpen, przez co jest prawdziwe.

+0

jaka jest różnica we właściwościach i zmiennych w javascript. Wszystko, co mogę myśleć, to: obiekty zmienne są nazywane właściwościami i ouside wszystko jest zmienne, nie nazywamy ich właściwościami. – AbhimanyuAryan

+1

@ androidplusios.design Nazywamy wartości należące do "właściwości" obiektów. Myślę, że jest to logiczne użycie języka angielskiego. "Dom ma właściwość posiadania otwartych drzwi" – ColBeseder

1

Przyjrzyjmy się, w jaki sposób javascript specyfikacji ECMA-262 opisuje termin właściwość

http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.26

4.3.26 nieruchomości

powiązanie pomiędzy nazwą a wartością, która jest częścią obiektu

UWAGA W zależności od formy nieruchomości wartość może wynosić reprezentowany bezpośrednio jako wartość danych (prymitywna wartość, obiekt lub obiekt funkcji) lub pośrednio przez parę funkcji akcesora .

4.3.27 metoda

funkcja, która jest wartością nieruchomości

UWAGA Gdy funkcja jest wywoływana jako metoda obiektu, obiekt jest przekazywane do funkcji jako jej This wartość.

także

definicja Javascript w atrybutu różni się od

4.3.29 atrybutu Java

wartość wewnętrzny, który określa pewne charakterystyczne właściwości


for in, pętle za pośrednictwem właściwości przeliczalnych obiektu, a która obejmuje jego funkcje

http://eloquentjavascript.net/1st_edition/chapter8.html

„Funkcja jest wywoływana jako metoda gdy jest spojrzał jako właściwość, i natychmiast wezwał, jak w object.method(). "

Nie wydaje się być bardziej standardowa definicja własności ..

https://en.wikipedia.org/wiki/Property_(programming)#JavaScript

„nieruchomości, w niektórych językach programowania obiektowego, to specjalny rodzaj członka klasy , pośrednie między polem (lub danymi ) i metodą. .... Niektóre języki obiektowe, takie jak Java, nie obsługują właściwości, i wymagają od programisty zdefiniowania pary akcesoriów i mutatorów o wartości . metody zamiast tego. "

W tym bardziej standardowe, non-javascript definicja własności

C# ma właściwości i Java nie mają właściwości

Powiązane problemy