Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Example of Properties vs. Methods in JS

I found a great description of the semantic difference between Properties and Methods (paraphrased, via http://www.webdeveloper.com/forum/showthread.php?133712-Properties-Vs.-Methods):

Properties are like nouns. They have a value or state.

Methods are like verbs. They perform actions.

A property can't perform an action and the only value that a method has is the one that is returned after it finishes performing the action.

e.g.

Property: door; Possible Values: open, closed

Method: openDoor; Action: to change the value of the door property to "open"

Creating an example: I understand this in theory but I can't come up with an example. Would it be possible to show me how the door/openDoor would look in actual Javascript code?

like image 963
jon Avatar asked Feb 19 '13 08:02

jon


2 Answers

Let's look at how the javascript spec ECMA-262 describes the term property

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

4.3.26 property

association between a name and a value that is a part of an object

NOTE Depending upon the form of the property the value may be represented either directly as a data value (a primitive value, an object, or a function object) or indirectly by a pair of accessor functions.

4.3.27 method

function that is the value of a property

NOTE When a function is called as a method of an object, the object is passed to the function as its this value.

Also

Javascript's definition of attribute is different from Java's

4.3.29 attribute

internal value that defines some characteristic of a property


for in, loops through an object's enumerable properties, and that includes its functions

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

"A function is called as a method when it is looked up as a property, and immediately called, as in object.method()."

There does seem to be a more standard definition of property..

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

"A property, in some object-oriented programming languages, is a special sort of class member, intermediate between a field (or data member) and a method. .... Some object-oriented languages, such as Java, don't support properties, and require the programmer to define a pair of accessor and mutator methods instead."

In that more standard, non-javascript definition of property

C# has properties, and Java doesn't have properties

like image 117
barlop Avatar answered Nov 15 '22 17:11

barlop


Really, you need to back up and read some of the links posted above. But as a quick example:

var house = {} ;

house.isDoorOpen = false ;

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

Here house is the object. It has a property: house.isDoorOpen. Here, it is more like an adjective. Either the door is open (true) or closed (false). As it sounds, it describes a property of the house.

Also, it has a method openDoor (which is used like this: house.openDoor() ). That's something that it can do. In this case, the action openDoor affects the isDoorOpen property, making it true.

like image 29
ColBeseder Avatar answered Nov 15 '22 17:11

ColBeseder