- shim - What is a Polyfill? / Shim vs Polyfill / Extend the Web Forward
- mo - A collection of OzJS core modules
Object.observe
- 原生支持: chrome,node-harmony
- 替代:NervJS, WatchJS, Polymer/observe-js
- Typed Object / binary data
- Parallel API / River Trail
- Concurrency and Distribution / Vat
- Event streams?
- Completing classes?
- SES(SecureEcmaScript)?
- Generator (
yield
)- 原生支持: firefox, chrome-experimental, node-harmony
- 编译器支持:traceur
- Iterator +
for..of
- 原生支持: firefox
- 编译器支持:traceur
Proxy
- 原生支持: firefox
Reflect
- Proper Tail Calls
Symbol
- 原生支持: chrome-experimental, node-harmony
Map
+Set
+WeakMap
+WeakSet
- 原生支持: ie11/firefox(不支持WeakSet), chrome(不支持Map、Set), node-harmony
- require('mo/lang/es6') / require('mo/lang/es6-collection')支持:
Map#get
/Map#set
/Map#delete
/Map#clear
/Map#has
/Map#size
/Map#forEach
WeakMap#get
/WeakMap#set
/WeakMap#delete
/WeakMap#clear
/WeakMap#has
Set#add
/Set#delete
/Set#clear
/Set#has
/Set#size
/Set#forEach
WeakSet#add
/WeakSet#delete
/WeakSet#clear
/WeakSet#has
- 弱引用/垃圾回收特性无法shim
#entries
/#keys
/#values
需要Iterator,无法shim- 其他shim:paulmillr/es6-shim, WebReflection/es6-collections
Promise
- 原生支持: firefox, chrome
- require('mo/lang/es6') / require('mo/lang/es6-promise')支持
- 其他shim:paulmillr/es6-shim, jakearchibald/es6-promise, getify/native-promise-only
- 替代:EventMaster, Q, when, RSVP
- Array + Number + String + Object APIs
- 原生支持: firefox(不支持Object.assign), chrome-experimental(不支持Array.from、Array.of、fromCodePoint)
- require('mo/lang/es6') / require('mo/lang/es6-utils')支持:
Array#find
/Array#findIndex
/Array#fill
/Array#copyWithin
Array.of
/Array.from
String#startsWith
/String#endsWith
/String#contains
/String#repeat
Number.MAX_SAFE_INTEGER
/Number.MIN_SAFE_INTEGER
/Number.EPSILON
/Number.isFinite
/Number.isInteger
/Number.isSafeInteger
/Number.isNaN
Object.is
/Object.assign
- require('mo/lang/es6') / require('mo/lang/es6-utils')不支持:
Object.setPrototypeOf
,String.fromCodePoint
,String#codePointAt
- 其他shim:paulmillr/es6-shim, other standalone shims
- Math APIs
- 原生支持: firefox, chrome-experimental
- 使用场景有限,不包含在require('mo/lang/es6-utils')里
- paulmillr/es6-shim支持
module
+Loader
- 编译器支持:traceur, es6-module-transpiler
- 需要编译器的shim支持:es6-module-loader+SystemJS
- 替代:AMD, CJS
let
- 原生支持: ie11、firefox, chrome ,node-harmony
const
- 原生支持: ie11, firefox, chrome, safari, node
- Arrows
- Comprehensions
- Destructuring
- Default + Rest + Spread Parameters
- Enhanced Object Literals(
__proto__
) - Block-level function declaration
- Template Strings(
${name}
) class
原生支持:ie9+(9不支持strict mode)、firefox4+、safari5.1+、chrome7+(19开始支持strict mode), node
- Array + String + Object + Date APIs
- require('mo/lang/es5')支持:
Array#forEach
/Array#map
/Array#filter
/Array#reduce
/Array#reduceRight
/Array#some
/Array#every
/Array#indexOf
/Array#lastIndexOf
/Array.isArray
String#trim
Date.now
Object.keys
/Object.getPrototypeOf
- require('mo/lang/es5')不支持:
Number#toFixed
/String#split
/Date.parse
/Date#toJSON
/Date#toISOString
- 其他shim:es5-shim
- require('mo/lang/es5')支持:
JSON
Object.create
/Function#bind
- require('mo/lang/es5')支持
- 其他shim:es5-shim
Object.defineProperty
/Object.defineProperties
/Object.seal
/Object.freeze
/Object.preventExtensions
/Object.isSealed
/Object.isFrozen
/Object.isExtensible
/Object.getOwnPropertyDescriptor
/Object.getOwnPropertyNames
- Getter / Setter
- Strict mode
"foobar"[3]
{ if: 1 }