jon
jon

Reputation: 6241

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?

Upvotes: 12

Views: 23149

Answers (3)

barlop
barlop

Reputation: 13790

Let's look at how the ECMA-262 2023 ECMAScript Standard describes the terms property and method:

4.4.36 property

part of an object that associates a key (either a String value or a Symbol value) and a value

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.4.37 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.4.39 attribute

internal value that defines some characteristic of a property


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

https://eloquentjavascript.net/06_object.html

In JavaScript, methods are nothing more than properties that hold function values.

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

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

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 and C++, 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.

Upvotes: 4

Sahil Singh Rathore
Sahil Singh Rathore

Reputation: 1

Object in JavaScript is just key-value pairs stored in a Hash. The difference between b/w property and method is that - property is a value stored in the hash key, whereas method is a function stored in the hash key.

Upvotes: 0

ColBeseder
ColBeseder

Reputation: 3669

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.

Upvotes: 22

Related Questions