Also see: Compatibility table of ES6 / non-standard features
by kangaxPlease note that these tests represent existence, not functionality or full conformance. I hope to test conformance sometime in the future.
| IE 7 | IE 8 | IE 9 | IE 10 | FF 3 | FF 3.5, 3.6 | FF 4+ | SF 3.2 | SF 4 | SF 5 | SF 5.1 | SF 6 | WebKit | CH 5 | CH 6 | CH 7-12 | CH 13-16 | CH 19+ | OP 10.1 | OP 10.50-11.50 | OP 12 | OP 12.10 | Konq 4.3 | Konq 4.9 | BESEN | Rhino 1.7 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| §Object.create | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.defineProperty | No | Yes[1] | Yes | Yes | No | No | Yes | No | No | Yes[2] | Yes | Yes | Yes[2] | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.defineProperties | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.getPrototypeOf | No | No | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | Yes | ||
| §Object.keys | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | Yes | ||
| §Object.seal | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.freeze | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.preventExtensions | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.isSealed | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.isFrozen | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.isExtensible | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.getOwnPropertyDescriptor | No | Yes | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §Object.getOwnPropertyNames | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | Yes | ||
| §Date.prototype.toISOString | No | No | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | No | Yes | Yes | ||
| §Date.now | No | No | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.isArray | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | Yes | ||
| §JSON | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | Yes | ||
| §Function.prototype.bind | No | No | Yes | Yes | No | No | Yes | No | No | No | No[3] | Yes | Yes | No | No | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | ||
| §String.prototype.trim | No | No | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | Yes | ||
| §Array.prototype.indexOf | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.lastIndexOf | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.every | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.some | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.forEach | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.map | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.filter | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.reduce | No | No | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.reduceRight | No | No | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Getter in property initializer | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Setter in property initializer | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Property access on strings[4] | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reserved words as property names[5] | No | No | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | No | ||
| §Zero-width chars in identifiers | No | No | Yes | Yes | No | No | Yes[6] | No | No | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | Yes | No | No | Yes | Yes | ||
| §Immutable undefined | No | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | No | Yes | Yes | No | Yes | Yes | Yes | ||
| §Strict mode | No | No | No | Yes[7] | No | No | Yes | No | No | No | Yes | Yes | Yes | No | No | No | Yes | Yes | No | No | Yes | Yes | No | No | Yes | No | ||
[1] In Internet Explorer 8 Object.defineProperty only accepts DOM objects (MSDN reference).
[2] In some versions of WebKit Object.defineProperty does not work with DOM objects.
[3] Function.prototype.bind is now supported in Safari 5.1.4
[4] For example: "foobar"[3] === "b"
[5] For example: ({ if: 1 })
[6] Firefox 4 & 5 fail this test
[7] IE10 PP2 has a bug with strict mode which makes the following expression "fail", even though strict mode is more or less supported: (function(){ "use strict"; return !this })()