2013-02-19 10 views
5

Ho trovato una grande descrizione della differenza semantica tra Proprietà e metodi (parafrasato, via http://www.webdeveloper.com/forum/showthread.php?133712-Properties-Vs.-Methods):Esempio di proprietà rispetto a metodi JS

proprietà sono come i nomi. Hanno un valore o stato.

I metodi sono come i verbi. Eseguono azioni.

Una proprietà non può eseguire un'azione e l'unico valore che ha un metodo è quello restituito al termine dell'esecuzione dell'azione.

ad es.

Proprietà: porta; Valori possibili: aperto, chiuso

Metodo: OpenDoor; Azione: per modificare il valore della proprietà porta di "aprire"

Creazione di un esempio: ho capito questo in teoria, ma non riesco a venire con un esempio. Sarebbe possibile mostrarmi come apparirà la porta/openDoor nel vero codice Javascript?

+0

Probabilmente siete avanti di te; dovresti leggere su [Object-Oriented Programming] (http://en.wikipedia.org/wiki/Object-oriented_programming) in generale, in primo luogo, poiché la tua domanda non è specifica di Javascript. Se anche la distinzione tra dati e funzioni non è chiara, è necessario eseguire un ulteriore backup. – lanzz

+1

Inoltre, penso che la distinzione non si applica in particolare a JS in particolare, poiché un * metodo * è solo una funzione memorizzata in una proprietà (ottenendo implicitamente il contesto della funzione impostato sull'oggetto dopo averlo chiamato come metodo). – Yoshi

+1

Non è necessario applicare a JS in particolare perché mi chiedo come funzioni nella lingua specifica che sto attualmente imparando. Apprezzo i collegamenti e il consiglio, guarderò attraverso quelli. Quello che sto cercando di capire è la semantica di JS, ** come scriverlo **, anche questa è una parte importante del processo. Ognuno ha il proprio stile di apprendimento e questo mi aiuterebbe davvero a capire JS. – jon

risposta

14

In realtà, è necessario eseguire il backup e leggere alcuni dei collegamenti pubblicati sopra. Ma come un rapido esempio:

var house = {} ; 

house.isDoorOpen = false ; 

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

Qui l'house è l'oggetto. Ha una proprietà: house.isDoorOpen. Qui è più come un aggettivo. O la porta è aperta (vera) o chiusa (falsa). A quanto pare, descrive una proprietà della casa.

Inoltre, ha un metodo openDoor (che viene utilizzato in questo modo: house.openDoor()). Questo è qualcosa che può fare. In questo caso, l'azione openDoor ha effetto sulla proprietà isDoorOpen, rendendola vera.

+0

qual è la differenza in b/w proprietà e variabili in javascript. Tutto quello che posso pensare è come: le variabili degli oggetti sono chiamate proprietà e tutto è variabile, non le chiamiamo proprietà. – AbhimanyuAryan

+1

@ androidplusios.design Chiamiamo valori che appartengono agli oggetti "proprietà". Penso che questo sia un uso logico dell'inglese. "La casa ha la proprietà di avere una porta aperta" – ColBeseder

1

Diamo un'occhiata a come il javascript specifiche ECMA-262 descrive il termine proprietà

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

4.3.26 proprietà

associazione tra un nome e un valore che è una parte di un oggetto

NOTA A seconda della forma della proprietà il valore può essere rappresentato direttamente come valore di un dato (un valore primitivo, un oggetto o un oggetto funzione) o indirettamente mediante una coppia di funzioni di accesso .

4.3.27 metodo

funzione che è il valore di una proprietà

NOTA Quando una funzione viene richiamata come metodo di un oggetto, l'oggetto è passato alla funzione come questa valore.

anche

definizione JavaScript dell'attributo è diverso da attributo di Java

4.3.29

valore interno che definisce alcune caratteristiche di una proprietà


for in, passanti attraverso le proprietà enumerabili di un oggetto, e che include le funzioni

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

"Una funzione viene richiamata come metodo quando viene cercato come proprietà, e subito chiamato, come in object.method(). "

Ci sembra essere una definizione più standard di proprietà ..

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

"Una proprietà, in alcuni linguaggi di programmazione orientati agli oggetti, è una speciale sorta di membro della classe , intermedio tra un campo (o dati membro) e un metodo. .... Alcuni linguaggi orientati agli oggetti, come Java, non supportano le proprietà e richiedono al programmatore di definire una coppia di accessor e mutator metodi invece. "

In quella più standard, la definizione non javascript della proprietà

C# ha proprietà, e Java non hanno proprietà

Problemi correlati