Also see compatibility tables for ES6 or non-standard features
by kangaxPlease note that some of these tests represent existence, not functionality or full conformance.
| IE 7 | IE 8 | IE 9 | IE 10, 11 | FF 3 | FF 3.5, 3.6 | FF 4+ | SF 3.2 | SF 4 | SF 5 | SF 5.1 | SF 6,7 | 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, 15 | Konq 4.3 | Konq 4.9 | BESEN | Rhino 1.7 | Phantom | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| §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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Yes | ||
| §Object.getOwnPropertyDescriptor | No | Yes[3] | Yes | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | 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 | 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 | 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 | 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 | 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 | Yes | ||
| §Function.prototype.bind | No | No | Yes | Yes | No | No | Yes | No | No | No | No[4] | Yes | Yes | No | No | Yes | Yes | Yes | No | No | Yes | Yes | No | No | Yes | Yes | No | ||
| §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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Yes | ||
| §Property access on strings[5] | 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 | Yes | ||
| §Reserved words as property names[6] | 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 | Yes | ||
| §Zero-width chars in identifiers | No | No | Yes | Yes | No | No | Yes[7] | No | No | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | Yes | No | No | Yes | Yes | No | ||
| §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 | Yes | ||
| §Strict mode | No | No | No | Yes[8] | No | No | Yes | No | No | No | Yes | Yes | Yes | No | No | No | Yes | Yes | No | No | Yes | Yes | No | No | Yes | No | Yes | ||
[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] In Internet Explorer 8 Object.getOwnPropertyDescriptor only accepts DOM objects (MSDN reference).
[4] Function.prototype.bind is now supported in Safari 5.1.4
[5] For example: "foobar"[3] === "b"
[6] For example: ({ if: 1 })
[7] Firefox 4 & 5 fail this test
[8] 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 })()