Reading JavaScript spec notes

By Xah Lee. Date: . Last updated: .

if you are reading JavaScript spec, here's some notes that helps you understand.

internal property, internal slot

2015-07-01 in JavaScript spec 2015, the confusing terminology internal property, is now called internal slot. see ECMAScript Data Types and Values#sec-object-internal-methods-and-internal-slots

host object, native object, standard object

2015-07-09 JavaScript 2015 (aka ES6), the term host object is gone. The term native object is now called standard object. compare:

js spec 2011 objects jargon
ECMAScript 5.1 §4#sec-4.3.6
js spec 2015 objects jargon zR3KP
ECMAScript 2015 §Overview#sec-standard-object

ordinary object

ECMAScript® 2016 Language Specification#sec-ordinary-object

object that has the default behaviour for the essential internal methods that must be supported by all objects

exotic object

object that does not have the default behaviour for one or more of the essential internal methods

NOTE Any object that is not an ordinary object is an exotic object.

ECMAScript® 2016 Language Specification#sec-exotic-object

standard object

object whose semantics are defined by this specification

ECMAScript® 2016 Language Specification#sec-standard-object

built-in object

ECMAScript® 2016 Language Specification#sec-built-in-object

object specified and supplied by an ECMAScript implementation

NOTE Standard built-in objects are defined in this specification. An ECMAScript implementation may specify and supply additional kinds of built-in objects. A built-in constructor is a built-in object that is also a constructor.

intrinsic object

ECMAScript® 2016 Language Specification#sec-well-known-intrinsic-objects

Well-known intrinsics are built-in objects that are explicitly referenced by the algorithms of this specification and which usually have realm-specific identities. Unless otherwise specified each intrinsic object actually corresponds to a set of similar objects, one per realm.

Within this specification a reference such as %name% means the intrinsic object, associated with the current realm, corresponding to the name. Determination of the current realm and its intrinsics is described in 8.3. The well-known intrinsics are listed in Table 7.

ECMAScript 2015 §ECMAScript Data Types and Values#sec-well-known-intrinsic-objects

code realm

ECMAScript® 2016 Language Specification#sec-code-realms

Before it is evaluated, all ECMAScript code must be associated with a realm. Conceptually, a realm consists of a set of intrinsic objects, an ECMAScript global environment, all of the ECMAScript code that is loaded within the scope of that global environment, and other associated state and resources.

A realm is represented in this specification as a Realm Record with the fields specified in Table 21:



An interface is a set of property keys whose associated values match a specific specification. Any object that provides all the properties as described by an interface's specification conforms to that interface. An interface is not represented by a distinct object. There may be many separately implemented objects that conform to any interface. An individual object may conform to multiple interfaces.

control abstraction objects

ECMAScript 2015 §Control Abstraction Objects#sec-control-abstraction-objects

Fundamental Objects

ECMAScript 2015 §Fundamental Objects#sec-fundamental-objects

these are Fundamental Objects:

JavaScript Spec Reading

Programing Language Spec