JavaScript: Property Overview
A JavaScript object is a set of key/value pairs. Each pair is called a “property”.
[see Object Overview]
2 Kinds of Properties
There are 2 kinds of properties.
- Data property
- This is the property most of us are familiar with, and is the property used in 99% of code.
- Accessor property
- Also known as Getter/Setter property. Accessor property generates its value dynamically when being accessed or set. (it calls a function implicitly).
[see Getter/Setter Properties]
Property Attributes
Each JavaScript property has associated info called attribute.
For Data Property, the attributes are: {value, writable, enumerable, configurable}.
For Accessor Property:
- For Getter Property, the attributes are: {get, enumerable, configurable}.
- For Setter Property, the attributes are: {set, enumerable, configurable}.
[see Property Attributes]
Own Property and Inherited Property
A property can be said to be a object's “own property” or “inherited property”.
- own property
- A property of a object.
- inherited property
- A property of the object's parent or ancestor. (parent/ancestor line is called prototype chain)
When a property is looked up (for example, x.color
), JavaScript look at the object to see if it has that property, if not, it lookup its parent, and repeat, until a property is found or a parent is null
. This is the technical meaning of inheritance.
[see Prototype and Inheritance]
This is the most important thing about properties. The behavior of many operations on properties, such as {accessing, setting, deleting, “for … in” loop, checking existence, etc}, depend on whether the property is the object's own property.
[see Check Property Existence]
When writing to a property or deleting a property, parent object is never touched. Only when reading property, the prototype chain (parents) is looked up.
[see Get Property, Set Property]
Property Key Datatype, Property Value Datatype
Property key can be type string or type symbol. [see Property Key]
Property value can be any type. [see Value Types]
When a property value is a function, that property is often called a “method”.
Property Syntax
There are 2 syntax to access a object's property:
- Dot notation
-
object_name.property_key
. (example,x.b
) - Bracket notation
-
object_name[property_key]
. (example,x["b"]
) This is more general, but inconvenient to type.
[see Property Dot Notation / Bracket Notation]
Add / Remove Property
Property can be added or removed from object.
[see Create/Delete Property]
[see Prevent Adding Property]
Accessing (Reading, Writing, Listing, Check Existence) of Property
Property value can be changed anytime (unless the attribute “configurable” is false
).
You can also check if a property exists for a object, in its parents, or list a object's own properties. See: