Everything in Ecmascript is an object. An object is a collection of properties. These properties are either a named data property (string), named accessor property or internal property.
Properties are collections of boolean attributes and are also tied to a value. Most people confuse properties with attributes, which is not very unexpected because attributes play no role when actually using Ecmascript. They are only used by the specification to define property behavior.
Accessors have one or two functions that define set and / or get behavior. The setter changes the value and the getter returns the value. They act like proxies or like PHP's magic functions.
Internal properties are not accessible from a script. They have no name and only serve the specification where they are listed with double square brackets surrounding them like [[Prototype]]. A notable exception to the inaccessibility of internal properties in some browsers is __proto__, which is a handle to the [[Prototype]] property. The value of some of the other properties can be gotten by several workarounds.
The sub chapters of this chapter regard the internal properties.