ECMAScript 2015 is the sixth edition of the ECMAScript Language Specification standard. It defines the standard for the JavaScript implementation in SpiderMonkey, the engine used in Firefox and other Mozilla applications.
Code-named "ES.next", "Harmony", or "ECMAScript 6", the first working draft (based on ECMAScript 5.1) was published on July 12, 2011 as "ES.next". In August 2014, the ECMAScript 2015 draft specification was feature frozen and went through a stabilization and bug fixing period. Finally, ECMA-262 Edition 6 got officially approved and published as a standard on June 17, 2015 by the ECMA General Assembly. It will also appear as the international industry standard ISO/IEC 16262:2016.
A PDF and HTML version of the standard can be freely downloaded on ecma-international.org.
A channel for feedback on ECMAScript standards is es-discuss.
Array
objectArray
iteration with for...of
(Firefox 13)Array.from()
(Firefox 32)Array.of()
(Firefox 25)Array.prototype.fill()
(Firefox 31)Array.prototype.find()
, Array.prototype.findIndex()
(Firefox 25)Array.prototype.entries()
,Array.prototype.keys()
(Firefox 28),Array.prototype.values()
Array.prototype.copyWithin()
(Firefox 32)get Array[@@species]
(Firefox 48)Map
and Set
objects, and their weak counterpartsMap
(Firefox 13)
Map
iteration with for...of
(Firefox 17)Map.prototype.forEach()
(Firefox 25)Map.prototype.entries()
(Firefox 20)Map.prototype.keys()
(Firefox 20)Map.prototype.values()
new Map
(null)
(Firefox 37)set()
in Constructor (Firefox 37)get Map[@@species]
(Firefox 41)Set
(Firefox 13)
Set
iteration with for...of
(Firefox 17)Set.prototype.forEach()
(Firefox 25)Set.prototype.entries()
,Set.prototype.keys()
,Set.prototype.values()
(Firefox 24)new Set
(null)
(Firefox 37)add()
in Constructor (Firefox 37)get Set[@@species]
(Firefox 41)WeakMap
(Firefox 6)
WeakMap.clear()
(Firefox 20)WeakMap
constructor (Firefox 36)new WeakMap
(null)
(Firefox 37)set()
in Constructor (Firefox 37)WeakSet
(Firefox 34)
new WeakSet
(null)
(Firefox 37)add()
in Constructor (Firefox 37)Math
functionsMath.imul()
(Firefox 20)Math.clz32()
(Firefox 31)Math.fround()
(Firefox 26)Math.log10()
, Math.log2()
, Math.log1p()
, Math.expm1()
, Math.cosh()
, Math.sinh()
, Math.tanh()
, Math.acosh()
, Math.asinh()
, Math.atanh()
, Math.hypot()
, Math.trunc()
, Math.sign()
, Math.cbrt()
(Firefox 25)Number
objectNumber.isNaN()
(Firefox 16)Number.isFinite()
(Firefox 16)Number.isInteger()
(Firefox 16)Number.parseInt()
(Firefox 25)Number.parseFloat()
(Firefox 25)Number.EPSILON
(Firefox 25)Number.MAX_SAFE_INTEGER
, Number.MIN_SAFE_INTEGER
(Firefox 31)Number.isSafeInteger()
(Firefox 32)Object
objectObject.prototype.__proto__
has been standardizedObject.is()
(Firefox 22)Object.setPrototypeOf()
(Firefox 31)Object.assign()
(Firefox 34)Object.getOwnPropertySymbols()
(Firefox 33)Date
objectDate.prototype
is an ordinary object (Firefox 41)Date.prototype.toString
(Firefox 41)Date.prototype[@@toPrimitive]
(Firefox 44)Promise
objectPromise
(Firefox 24, enabled by default in Firefox 29)Proxy
objectProxy
(Firefox 18)preventExtensions()
trap (Firefox 22)isExtensible()
trap (Firefox 31)getPrototypeOf()
and setPrototypeOf()
traps (Firefox 49)Reflect
objectRegExp
objectRegExp
sticky (y) flag (Firefox 38)RegExp
unicode (u) flag (Firefox 46)RegExp.prototype.toString
(Firefox 39)RegExp.prototype[@@match]()
(Firefox 49)RegExp.prototype[@@replace]()
(Firefox 49)RegExp.prototype[@@search]()
(Firefox 49)RegExp.prototype[@@split]()
(Firefox 49)get RegExp[@@species]
(Firefox 49)String
objectString.fromCodePoint()
(Firefox 29)String.prototype.codePointAt()
(Firefox 29)String.prototype.startsWith()
, String.prototype.endsWith()
(Firefox 17)String.prototype.includes()
(Firefox 40) (formerly String.prototype.contains()
(Firefox 17))String.prototype.repeat()
(Firefox 24)String.prototype.normalize()
(Firefox 31)String.raw()
(Firefox 34)Symbol
objectSymbol
(Firefox 36)Symbol.iterator
(Firefox 36)Symbol.for()
- global Symbol registry (Firefox 36)Symbol.match
(Firefox 40)Symbol.species
(Firefox 41)Symbol.toPrimitive
(Firefox 44)Symbol.prototype[@@toPrimitive]
(Firefox 44)Symbol.replace
(Firefox 49)Symbol.search
(Firefox 49)Symbol.split
(Firefox 49)Symbol.hasInstance
(Firefox 50)Typed arrays are specified as part of ECMAScript 2015 and no longer in their own specification.
ArrayBuffer
get ArrayBuffer[@@species]
(Firefox 48)DataView
Int8Array
Uint8Array
Uint8ClampedArray
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
get %TypedArray%[@@species]
(Firefox 48)Symbol.iterator
property (Firefox 36)Symbol.iterator
property (Firefox 36)const
(JS 1.5, Firefox 1.0) (ES2015 compliance bug 950547 implemented in Firefox 51)let
(JS 1.7, Firefox 2) (ES2015 compliance bug 950547 implemented in Firefox 51)for...of
(Firefox 13)
.iterator()
and .next()
(Firefox 17)"@@iterator"
property (Firefox 27)Symbol.iterator
property (Firefox 36)Generator function
(Firefox 26)
arguments[@@iterator]
(Firefox 46)