core-js ES6 ES7 cheatsheet

ECMAScript 5 (ES5):ECMAScript 的第五版修订,于 2009 年完成标准化。这个规范在所有现代浏览器中都相当完全的实现了。

ECMAScript 6 (ES2015/ES6) / ECMAScript 2015 (ES2015):ECMAScript 的第六版修订,于 2015 年完成标准化。这个标准被部分实现于大部分现代浏览器。可以查阅这张兼容性表来查看不同浏览器和工具的实现情况。

ECMAScript 2016 (ES2016/ES7):第七版 ECMAScript 修订.

ECMAScript 2017 (ES2017)

对常用的API作个简单说明(按需引入polyfill), 点此查看Github链接原文

下文中. 表示类方法/属性, # 表示实例方法/属性
ES5: All features moved to the es6 namespace, here just a list of features:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Object
.create(proto | null, descriptors?) -> object
.getPrototypeOf(object) -> proto | null
.defineProperty(target, key, desc) -> target, cap for ie8-
.defineProperties(target, descriptors) -> target, cap for ie8-
.getOwnPropertyDescriptor(object, key) -> desc
.getOwnPropertyNames(object) -> array
.keys(object) -> array
.seal(object) -> object, cap for ie8-
.freeze(object) -> object, cap for ie8-
.preventExtensions(object) -> object, cap for ie8-
.isSealed(object) -> bool, cap for ie8-
.isFrozen(object) -> bool, cap for ie8-
.isExtensible(object) -> bool, cap for ie8-
Array
.isArray(var) -> bool
#slice(start?, end?) -> array, fix for ie7-
#join(string = ',') -> string, fix for ie7-
#indexOf(var, from?) -> int
#lastIndexOf(var, from?) -> int
#every(fn(val, index, @), that) -> bool
#some(fn(val, index, @), that) -> bool
#forEach(fn(val, index, @), that) -> void
#map(fn(val, index, @), that) -> array
#filter(fn(val, index, @), that) -> array
#reduce(fn(memo, val, index, @), memo?) -> var
#reduceRight(fn(memo, val, index, @), memo?) -> var
#sort(fn?) -> @, fixes for some engines
Function
#bind(object, ...args) -> boundFn(...args)
String
#split(separator, limit) -> array
#trim() -> str
RegExp
#toString() -> str
Number
#toFixed(digits) -> string
#toPrecision(precision) -> string
parseInt(str, radix) -> int
parseFloat(str) -> num
Date
.now() -> int
#toISOString() -> string
#toJSON() -> string

ES6: Object

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Object
.assign(target, ...src) -> target
.is(a, b) -> bool
.setPrototypeOf(target, proto | null) -> target (required __proto__ - IE11+)
.create(object | null, descriptors?) -> object
.getPrototypeOf(var) -> object | null
.defineProperty(object, key, desc) -> target
.defineProperties(object, descriptors) -> target
.getOwnPropertyDescriptor(var, key) -> desc | undefined
.keys(var) -> array
.getOwnPropertyNames(var) -> array
.freeze(var) -> var
.seal(var) -> var
.preventExtensions(var) -> var
.isFrozen(var) -> bool
.isSealed(var) -> bool
.isExtensible(var) -> bool
#toString() -> string, ES6 fix: @@toStringTag support

ES6: Function

1
2
3
4
Function
#bind(object, ...args) -> boundFn(...args)
#name -> string (IE9+)
#@@hasInstance(var) -> bool

ES6: Array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Array
.from(iterable | array-like, mapFn(val, index)?, that) -> array
.of(...args) -> array
.isArray(var) -> bool
#copyWithin(target = 0, start = 0, end = @length) -> @
#fill(val, start = 0, end = @length) -> @
#find(fn(val, index, @), that) -> val
#findIndex(fn(val, index, @), that) -> index | -1
#values() -> iterator
#keys() -> iterator
#entries() -> iterator
#join(string = ',') -> string, fix for ie7-
#slice(start?, end?) -> array, fix for ie7-
#indexOf(var, from?) -> index | -1
#lastIndexOf(var, from?) -> index | -1
#every(fn(val, index, @), that) -> bool
#some(fn(val, index, @), that) -> bool
#forEach(fn(val, index, @), that) -> void
#map(fn(val, index, @), that) -> array
#filter(fn(val, index, @), that) -> array
#reduce(fn(memo, val, index, @), memo?) -> var
#reduceRight(fn(memo, val, index, @), memo?) -> var
#sort(fn?) -> @, invalid arguments fix
#@@iterator() -> iterator (values)
#@@unscopables -> object (cap)
Arguments
#@@iterator() -> iterator (values, available only in core-js methods)

ES6: String

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String
.fromCodePoint(...codePoints) -> str
.raw({raw}, ...substitutions) -> str
#includes(str, from?) -> bool
#startsWith(str, from?) -> bool
#endsWith(str, from?) -> bool
#repeat(num) -> str
#codePointAt(pos) -> uint
#trim() -> str, ES6 fix
#anchor(name) -> str
#big() -> str
#blink() -> str
#bold() -> str
#fixed() -> str
#fontcolor(color) -> str
#fontsize(size) -> str
#italics() -> str
#link(url) -> str
#small() -> str
#strike() -> str
#sub() -> str
#sup() -> str
#@@iterator() -> iterator (code points)

ES6: RegExp

1
2
3
4
5
6
7
8
9
10
11
12
[new] RegExp(pattern, flags?) -> regexp, ES6 fix: can alter flags (IE9+)
#flags -> str (IE9+)
#toString() -> str, ES6 fixes
#@@match(str) -> array | null
#@@replace(str, replacer) -> string
#@@search(str) -> index
#@@split(str, limit) -> array
String
#match(tpl) -> var, ES6 fix for support @@match
#replace(tpl, replacer) -> var, ES6 fix for support @@replace
#search(tpl) -> var, ES6 fix for support @@search
#split(tpl, limit) -> var, ES6 fix for support @@split, some fixes for old engines

ES6: Number

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[new] Number(var)         -> number | number object
.isFinite(num) -> bool
.isNaN(num) -> bool
.isInteger(num) -> bool
.isSafeInteger(num) -> bool
.parseFloat(str) -> num
.parseInt(str) -> int
.EPSILON -> num
.MAX_SAFE_INTEGER -> int
.MIN_SAFE_INTEGER -> int
#toFixed(digits) -> string, fixes
#toPrecision(precision) -> string, fixes
parseFloat(str) -> num, fixes
parseInt(str) -> int, fixes

ES6: Math

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Math
.acosh(num) -> num
.asinh(num) -> num
.atanh(num) -> num
.cbrt(num) -> num
.clz32(num) -> uint
.cosh(num) -> num
.expm1(num) -> num
.fround(num) -> num
.hypot(...args) -> num
.imul(num, num) -> int
.log1p(num) -> num
.log10(num) -> num
.log2(num) -> num
.sign(num) -> 1 | -1 | 0 | -0 | NaN
.sinh(num) -> num
.tanh(num) -> num
.trunc(num) -> num

ES6: Date

1
2
3
4
5
6
Date
.now() -> int
#toISOString() -> string
#toJSON() -> string
#toString() -> string
#@@toPrimitive(hint) -> primitive

ES6: Promise

1
2
3
4
5
6
7
new Promise(executor(resolve(var), reject(var))) -> promise
#then(resolved(var), rejected(var)) -> promise
#catch(rejected(var)) -> promise
.resolve(promise | var) -> promise
.reject(var) -> promise
.all(iterable) -> promise
.race(iterable) -> promise

ES6: Collections

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
new Map(iterable (entries) ?)     -> map
#clear() -> void
#delete(key) -> bool
#forEach(fn(val, key, @), that) -> void
#get(key) -> val
#has(key) -> bool
#set(key, val) -> @
#size -> uint
#values() -> iterator
#keys() -> iterator
#entries() -> iterator
#@@iterator() -> iterator (entries)

new Set(iterable?) -> set
#add(key) -> @
#clear() -> void
#delete(key) -> bool
#forEach(fn(el, el, @), that) -> void
#has(key) -> bool
#size -> uint
#values() -> iterator
#keys() -> iterator
#entries() -> iterator
#@@iterator() -> iterator (values)

new WeakMap(iterable (entries) ?) -> weakmap
#delete(key) -> bool
#get(key) -> val
#has(key) -> bool
#set(key, val) -> @

new WeakSet(iterable?) -> weakset
#add(key) -> @
#delete(key) -> bool
#has(key) -> bool

ES6: Symbol

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Symbol(description?)  -> symbol
.hasInstance -> @@hasInstance
.isConcatSpreadable -> @@isConcatSpreadable
.iterator -> @@iterator
.match -> @@match
.replace -> @@replace
.search -> @@search
.species -> @@species
.split -> @@split
.toPrimitive -> @@toPrimitive
.toStringTag -> @@toStringTag
.unscopables -> @@unscopables
.for(key) -> symbol
.keyFor(symbol) -> key
.useSimple() -> void
.useSetter() -> void
Object
.getOwnPropertySymbols(object) -> array

ES6: Typed Arrays

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
new ArrayBuffer(length) -> buffer
.isView(var) -> bool
#slice(start = 0, end = @length) -> buffer
#byteLength -> uint

new DataView(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) -> view
#getInt8(offset) -> int8
#getUint8(offset) -> uint8
#getInt16(offset, littleEndian = false) -> int16
#getUint16(offset, littleEndian = false) -> uint16
#getInt32(offset, littleEndian = false) -> int32
#getUint32(offset, littleEndian = false) -> uint32
#getFloat32(offset, littleEndian = false) -> float32
#getFloat64(offset, littleEndian = false) -> float64
#setInt8(offset, value) -> void
#setUint8(offset, value) -> void
#setInt16(offset, value, littleEndian = false) -> void
#setUint16(offset, value, littleEndian = false) -> void
#setInt32(offset, value, littleEndian = false) -> void
#setUint32(offset, value, littleEndian = false) -> void
#setFloat32(offset, value, littleEndian = false) -> void
#setFloat64(offset, value, littleEndian = false) -> void
#buffer -> buffer
#byteLength -> uint
#byteOffset -> uint

{
Int8Array,
Uint8Array,
Uint8ClampedArray,
Int16Array,
Uint16Array,
Int32Array,
Uint32Array,
Float32Array,
Float64Array
}
new %TypedArray%(length) -> typed
new %TypedArray%(typed) -> typed
new %TypedArray%(arrayLike) -> typed
new %TypedArray%(iterable) -> typed
new %TypedArray%(buffer, byteOffset = 0, length = (buffer.byteLength - byteOffset) / @BYTES_PER_ELEMENT) -> typed
.BYTES_PER_ELEMENT -> uint
.from(arrayLike | iterable, mapFn(val, index)?, that) -> typed
.of(...args) -> typed
#BYTES_PER_ELEMENT -> uint
#copyWithin(target = 0, start = 0, end = @length) -> @
#every(fn(val, index, @), that) -> bool
#fill(val, start = 0, end = @length) -> @
#filter(fn(val, index, @), that) -> typed
#find(fn(val, index, @), that) -> val
#findIndex(fn(val, index, @), that) -> index
#forEach(fn(val, index, @), that) -> void
#indexOf(var, from?) -> int
#join(string = ',') -> string
#lastIndexOf(var, from?) -> int
#map(fn(val, index, @), that) -> typed
#reduce(fn(memo, val, index, @), memo?) -> var
#reduceRight(fn(memo, val, index, @), memo?) -> var
#reverse() -> @
#set(arrayLike, offset = 0) -> void
#slice(start = 0, end = @length) -> typed
#some(fn(val, index, @), that) -> bool
#sort(fn(a, b)?) -> @
#subarray(start = 0, end = @length) -> typed
#toString() -> string
#toLocaleString() -> string
#values() -> iterator
#keys() -> iterator
#entries() -> iterator
#@@iterator() -> iterator (values)
#buffer -> buffer
#byteLength -> uint
#byteOffset -> uint
#length -> uint

ES6: Reflect

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Reflect
.apply(target, thisArgument, argumentsList) -> var
.construct(target, argumentsList, newTarget?) -> object
.defineProperty(target, propertyKey, attributes) -> bool
.deleteProperty(target, propertyKey) -> bool
.enumerate(target) -> iterator (removed from the spec and will be removed from core-js@3)
.get(target, propertyKey, receiver?) -> var
.getOwnPropertyDescriptor(target, propertyKey) -> desc
.getPrototypeOf(target) -> object | null
.has(target, propertyKey) -> bool
.isExtensible(target) -> bool
.ownKeys(target) -> array
.preventExtensions(target) -> bool
.set(target, propertyKey, V, receiver?) -> bool
.setPrototypeOf(target, proto) -> bool (required __proto__ - IE11+)

ES7: Stage 4 proposals

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Array
#includes(var, from?) -> bool
{
Int8Array,
Uint8Array,
Uint8ClampedArray,
Int16Array,
Uint16Array,
Int32Array,
Uint32Array,
Float32Array,
Float64Array
}
#includes(var, from?) -> bool

Object
.values(object) -> array
.entries(object) -> array
.getOwnPropertyDescriptors(object) -> object

String
#padStart(length, fillStr = ' ') -> string
#padEnd(length, fillStr = ' ') -> string

Object
#__defineSetter__(key, fn) -> void
#__defineGetter__(key, fn) -> void
#__lookupSetter__(key) -> fn | void
#__lookupGetter__(key) -> fn | void

ES7: Stage 3 proposals

1
2
3
4
5
6
7
8
9
10
11
global -> object
System
.global -> object (obsolete)

global.Array === Array; // => true

Promise
#finally(onFinally()) -> promise

Symbol
.asyncIterator -> @@asyncIterator

ES7: Stage 2 proposals

1
2
3
4
5
String
#trimLeft() -> string
#trimRight() -> string
#trimStart() -> string
#trimEnd() -> string

ES7: Stage 1 proposals

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Promise
.try(function()) -> promise

Array
#flatten(depthArg = 1) -> array
#flatMap(fn(val, key, @), that) -> array

Set
.of(...args) -> set
.from(iterable, mapFn(val, index)?, that?) -> set
Map
.of(...args) -> map
.from(iterable, mapFn(val, index)?, that?) -> map
WeakSet
.of(...args) -> weakset
.from(iterable, mapFn(val, index)?, that?) -> weakset
WeakMap
.of(...args) -> weakmap
.from(iterable, mapFn(val, index)?, that?) -> weakmap

String
#matchAll(regexp) -> iterator

new Observable(fn) -> observable
#subscribe(observer) -> subscription
#forEach(fn) -> promise
#@@observable() -> @
.of(...items) -> observable
.from(observable | iterable) -> observable
.@@species -> @
Symbol
.observable -> @@observable

Math
.DEG_PER_RAD -> number
.RAD_PER_DEG -> number
.clamp(x, lower, upper) -> number
.degrees(radians) -> number
.fscale(x, inLow, inHigh, outLow, outHigh) -> number
.radians(degrees) -> number
.scale(x, inLow, inHigh, outLow, outHigh) -> number

Math
.signbit(x) -> bool

…ES7: Stage 0 proposals and below