caniuse-es-db
Version:
ECMAScript compatibility database based on kangax/compat-table
1,951 lines (1,692 loc) • 33.1 kB
JavaScript
// exports browsers and tests
exports.name = 'ES5';
exports.target_file = 'es5/index.html';
exports.skeleton_file = 'es5/skeleton.html';
exports.browsers = {
es5shim: {
full: 'es5-shim',
short: 'es5-shim',
obsolete: false,
platformtype: 'compiler'
},
ie7: {
full: 'Internet Explorer 7',
short: 'IE 7',
obsolete: true
},
ie8: {
full: 'Internet Explorer 8',
short: 'IE 8',
obsolete: true
},
ie9: {
full: 'Internet Explorer 9',
short: 'IE 9',
obsolete: false
},
ie10: {
full: 'Internet Explorer 10, 11',
short: 'IE 10+',
obsolete: false
},
firefox3: {
full: 'Firefox 3',
short: 'FF 3',
obsolete: true
},
firefox3_5: {
full: 'Firefox 3.5, Firefox 3.6',
short: 'FF 3.5, 3.6',
obsolete: true
},
firefox4: {
full: 'Firefox 4-20',
short: 'FF 4-20',
obsolete: true
},
firefox21: {
full: 'Firefox 21+',
short: 'FF 21+',
obsolete: false
},
safari3: {
full: 'Safari 3.2',
short: 'SF 3.2',
obsolete: true
},
safari4: {
full: 'Safari 4.0.5',
short: 'SF 4',
obsolete: true
},
safari5: {
full: 'Safari 5.0.5',
short: 'SF 5',
obsolete: true
},
safari51: {
full: 'Safari 5.1.4',
short: 'SF 5.1.4',
obsolete: true
},
safari6: {
full: 'Safari 6.0, Safari 7.0, Safari 7.1, Safari 8',
short: 'SF 6+',
obsolete: false
},
webkit: {
full: 'Webkit r120398 (June 20, 2012)',
short: 'WebKit',
obsolete: false
},
chrome5: {
full: 'Chrome 5 (5.0.375.127)',
short: 'CH 5',
obsolete: true
},
chrome6: {
full: 'Chrome 6 (6.0.472.55)',
short: 'CH 6',
obsolete: true
},
chrome7: {
full: 'Chrome 7 (7.0.517.5), Chrome 8, Chrome 9 (9.0.587.0 dev), Chrome 10, Chrome 11, Chrome 12 (12.0.742.91)',
short: 'CH 7-12',
obsolete: true
},
chrome13: {
full: 'Chrome 13 (13.0.782.107 beta), Chrome 14 (14.0.835.8 dev), Chrome 15, Chrome 16 (16.0.891.0 dev)',
short: 'CH 13-16',
obsolete: true
},
chrome19: {
full: 'Chrome 19 (19.0.1084.56 stable), Chrome 22',
short: 'CH 19-22',
obsolete: true
},
chrome23: {
full: 'Chrome 23+, Opera 15+',
short: 'CH 23+,<br>OP 15+',
obsolete: false
},
opera10_10: {
full: 'Opera 10.10',
short: 'OP 10.1',
obsolete: true
},
opera10_50: {
full: 'Opera 10.50, Opera 10.62 (build 8437), Opera 10.70 (build 9044), Opera 11 (build 1156), Opera 11.10 (build 2048), Opera 11.11 (build 2109), Opera 11.50 (build 1074)',
short: 'OP 10.50-11.50',
obsolete: true
},
opera12: {
full: 'Opera 12 (build 1065)',
short: 'OP 12',
obsolete: true
},
opera12_10: {
full: 'Opera 12.15',
short: 'OP 12.10',
obsolete: false
},
konq43: {
full: 'Konqueror 4.3',
short: 'Konq 4.3',
obsolete: true
},
konq49: {
full: 'Konqueror 4.9',
short: 'Konq 4.9',
obsolete: true
},
konq413: {
full: 'Konqueror 4.13',
short: 'Konq 4.13',
obsolete: false
},
besen: {
full: 'Bero\'s EcmaScript Engine (version 1.0.0.489)',
short: 'BESEN',
link: 'http://besen.sourceforge.net/',
obsolete: false,
platformtype: 'engine',
},
rhino: {
full: 'Rhino 1.7 release 3 PRERELEASE 2010 01 14',
short: 'Rhino 1.7',
obsolete: false,
platform: 'engine',
},
phantom: {
full: 'PhantomJS 2.0',
short: 'PhantomJS 2.0',
obsolete: false,
platformtype: 'engine',
},
ejs: {
full: 'Echo JS',
short: 'EJS',
obsolete: false,
platformtype: 'compiler',
},
ios78: {
full: 'iOS Safari 7/8',
short: 'iOS7/8',
platformtype: 'mobile',
}
};
var sparseNote = {
val: true,
note_id: 'sparse_arrays',
note_html: 'Internet Explorer 6 - 8 do not differentiate between a dense array with undefined values, and a sparse array. Specifically, `0 in [,]` and `0 in [undefined]` both yield false - whereas in a compliant browser, the former would give `false`, the latter `true`. As such, ES5 array iteration methods can only be shimmed reliably when dealing with dense arrays.'
};
exports.tests = [
{
name: 'Object.create',
exec: function () {
return typeof Object.create == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.defineProperty',
exec: function () {
return typeof Object.defineProperty == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: {
val: true,
note_id: 'define-property-ie',
note_html: 'In Internet Explorer 8 <code>Object.defineProperty</code> only accepts DOM objects ' +
'(<a href="http://msdn.microsoft.com/en-us/library/dd548687(VS.85).aspx">MSDN reference</a>).'
},
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: {
val: true,
note_id: 'define-property-webkit',
note_html: 'In some versions of Safari 5, <code>Object.defineProperty</code> does <b>not</b> work with DOM objects.'
},
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.defineProperties',
exec: function () {
return typeof Object.defineProperties == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.getPrototypeOf',
exec: function () {
return typeof Object.getPrototypeOf == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.keys',
exec: function () {
return typeof Object.keys == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.seal',
exec: function () {
return typeof Object.seal == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.freeze',
exec: function () {
return typeof Object.freeze == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.preventExtensions',
exec: function () {
return typeof Object.preventExtensions == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.isSealed',
exec: function () {
return typeof Object.isSealed == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.isFrozen',
exec: function () {
return typeof Object.isFrozen == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.isExtensible',
exec: function () {
return typeof Object.isExtensible == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.getOwnPropertyDescriptor',
exec: function () {
return typeof Object.getOwnPropertyDescriptor == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: {
val: true,
note_id: 'get-own-property-descriptor-ie',
note_html: 'In Internet Explorer 8 <code>Object.getOwnPropertyDescriptor</code> only accepts DOM objects ' +
'(<a href="http://msdn.microsoft.com/en-us/library/dd548687(VS.85).aspx">MSDN reference</a>).'
},
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Object.getOwnPropertyNames',
exec: function () {
return typeof Object.getOwnPropertyNames == 'function';
},
res: {
es5shim: false,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
},
separator: 'after'
},
{
name: 'Date.prototype.toISOString',
exec: function () {
return typeof Date.prototype.toISOString == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: false,
ios78: true
}
},
{
name: 'Date.now',
exec: function () {
return typeof Date.now == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.isArray',
exec: function () {
return typeof Array.isArray == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'JSON',
exec: function () {
return typeof JSON == 'object';
},
res: {
es5shim: false,
ie7: false,
ie8: true,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Function.prototype.bind',
exec: function () {
return typeof Function.prototype.bind == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'String.prototype.trim',
exec: function () {
return typeof String.prototype.trim == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
},
separator: 'after'
},
{
name: 'Array.prototype.indexOf',
exec: function () {
return typeof Array.prototype.indexOf == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.lastIndexOf',
exec: function () {
return typeof Array.prototype.lastIndexOf == 'function';
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.every',
exec: function () {
return typeof Array.prototype.every == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.some',
exec: function () {
return typeof Array.prototype.some == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.forEach',
exec: function () {
return typeof Array.prototype.forEach == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.map',
exec: function () {
return typeof Array.prototype.map == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.filter',
exec: function () {
return typeof Array.prototype.filter == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.reduce',
exec: function () {
return typeof Array.prototype.reduce == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Array.prototype.reduceRight',
exec: function () {
return typeof Array.prototype.reduceRight == 'function';
},
res: {
es5shim: sparseNote,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
},
separator: 'after'
},
{
name: 'Getter in property initializer',
exec: function () {/*
return ({ get x(){ return 1 } }).x === 1;
*/},
res: {
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Setter in property initializer',
exec: function () {/*
var value = 0;
({ set x(v){ value = v; } }).x = 1;
return value === 1;
*/},
res: {
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
},
separator: 'after'
},
{
name: 'Property access on strings',
exec: function () {
return "foobar"[3] === "b";
},
res: {
ie7: false,
ie8: true,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: true,
safari4: true,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: true,
chrome6: true,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: true,
opera10_50: true,
opera12: true,
opera12_10: true,
konq43: true,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Reserved words as property names',
exec: function () {/*
return ({ if: 1 }).if === 1;
*/},
res: {
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: true,
firefox3_5: true,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: true,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: true,
besen: true,
rhino: false,
phantom: true,
ejs: true,
ios78: true
},
separator: 'after'
},
{
name: 'Zero-width chars in identifiers',
exec: function () {/*
var _\u200c\u200d = true;
return _\u200c\u200d;
*/},
res: {
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: {
val: true,
note_id: 'zero-width-char',
note_html: 'Firefox 4 & 5 fail this test'
},
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: false,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: false,
chrome13: false,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: false,
opera12_10: true,
konq43: false,
konq49: false,
konq413: false,
besen: true,
rhino: true,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'parseInt() ignores leading zeros',
exec: function () {
return parseInt('010') === 10;
},
res: {
es5shim: true,
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: false,
firefox21: true,
safari3: false,
safari4: false,
safari5: false,
safari51: false,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: false,
chrome13: false,
chrome19: false,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: false,
opera12_10: false,
konq43: false,
konq49: false,
konq413: false,
besen: true,
rhino: false,
phantom: true,
ejs: true,
ios78: true
}
},
{
name: 'Immutable undefined',
exec: function () {/*
undefined = 12345;
var result = typeof undefined == 'undefined';
undefined = void 0;
return result;
*/},
res: {
ie7: false,
ie8: false,
ie9: true,
ie10: true,
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: true,
safari3: false,
safari4: false,
safari5: true,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: false,
chrome13: false,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: true,
konq413: true,
besen: true,
rhino: true,
phantom: true,
ejs: false,
ios78: true
}
},
{
name: 'Strict mode',
link: '../strict-mode/',
exec: function () {
"use strict";
return !this;
},
res: {
ie7: false,
ie8: false,
ie9: false,
ie10: {
val: true,
note_id: 'strict-mode-ie10',
note_html: 'IE10 PP2 has a bug with strict mode which makes the following expression "fail", even though strict mode is more or less supported: <code>(function(){ "use strict"; return !this })()</code>'
},
firefox3: false,
firefox3_5: false,
firefox4: true,
firefox21: {
val: true,
note_id: 'strict-mode-ff21',
note_html: 'In Firefox, strict getters on String, Boolean and Number prototypes receive wrapped <code>this</code> values (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=603201">Bugzilla reference</a>).'
},
safari3: false,
safari4: false,
safari5: false,
safari51: true,
safari6: true,
webkit: true,
chrome5: false,
chrome6: false,
chrome7: false,
chrome13: true,
chrome19: true,
chrome23: true,
opera10_10: false,
opera10_50: false,
opera12: true,
opera12_10: true,
konq43: false,
konq49: false,
konq413: false,
besen: true,
rhino: false,
phantom: true,
ejs: true,
ios78: true
}
}
];