Comparison of layout engines (ECMAScript)
The following tables compare ECMAScript (JavaScript) support for a number of layout engines. Please see the individual products' articles for further information. This article is not all-inclusive or necessarily up-to-date. Unless otherwise specified in footnotes, comparisons are based on The Stable versions without any add-ons, extensions or external programs.
EcmaScript version support
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
|||
|---|---|---|---|---|---|---|---|
Name of EcmaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
||
EcmaScript Version |
EDition 3 |
||||||
JavaScript 1.5 extensions |
(?) |
(?) |
|||||
JavaScript 1.6 extensions |
? |
? |
|||||
JavaScript 1.7 extensions |
|||||||
JavaScript 1.8 extensions |
|||||||
JScript.NET extensions |
|||||||
ActionScript extensions |
|||||||
Edition 4 (future) |
|||||||
Standard Library
Global object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Value properties |
NaN |
4.0 (?) |
? |
||||
Infinity |
4.0 (?) |
? |
|||||
undefined |
No (?) |
? |
|||||
Function properties |
eval(x) |
4.0 (?) |
? |
||||
parseInt(string [, radix]) |
4.0 (?) |
? |
|||||
parseFloat(string) |
4.0 (?) |
? |
|||||
isNaN(number) |
4.0 (?) |
? |
|||||
isFinite(number) |
4.0 (?) |
? |
|||||
URI handling functions |
decodeURI(encodedURI) |
No (?) |
? |
||||
decodeURIComponent(encodedURIComponent) |
No (?) |
? |
|||||
encodeURI(uri) |
No (?) |
? |
|||||
encodeURIComponent(uriComponent) |
No (?) |
? |
|||||
Constructor properties |
Object |
? |
? |
||||
Function |
? |
? |
|||||
Array |
? |
? |
|||||
String |
? |
? |
|||||
Boolean |
? |
? |
|||||
Number |
? |
? |
|||||
Date |
? |
? |
|||||
RegExp |
? |
? |
|||||
Error |
? |
? |
|||||
EvalError |
? |
? |
|||||
RangeError |
? |
? |
|||||
ReferenceError |
? |
? |
|||||
SyntaxError |
? |
? |
|||||
TypeError |
? |
? |
|||||
URIError |
? |
? |
|||||
Other properties |
Math |
? |
? |
||||
Additional properties |
escape(string) |
? |
? |
||||
unescape(string) |
? |
? |
|||||
Object object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Object([value]) |
? |
? |
||||
Called as constructor |
new Object([value]) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
toString() |
? |
? |
|||||
toLocaleString() |
? |
? |
|||||
valueOf() |
? |
? |
|||||
hasOwnProperty(V) |
? |
? |
|||||
isPrototypeOf(V) |
? |
? |
|||||
propertyIsEnumerable(V) |
? |
? |
|||||
Function object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Function(p1 [, p2 [, ...,] body]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Function(p1 [, p2 [, ...,] body]) |
? |
? |
||||
Properties |
length |
? |
? |
? |
? |
? |
|
prototype |
? |
? |
|||||
Properties of prototype |
length |
? |
? |
? |
? |
? |
? |
constructor |
? |
? |
|||||
toString() |
? |
? |
|||||
apply(thisArg, argArray) |
? |
? |
|||||
call(thisArg [, arg1 [, arg2 [, ...]]]) |
? |
? |
|||||
Properties of instances |
length |
? |
? |
||||
prototype |
? |
? |
|||||
Array object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Array([item1 [, item2 [, ...]]]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Array([item1, item2 [, ...]]) |
? |
? |
||||
new Array(len) |
? |
? |
|||||
Properties |
|||||||
prototype |
? |
? |
|||||
Properties of prototype |
|||||||
constructor |
? |
? |
|||||
toString() |
? |
? |
|||||
toLocaleString() |
? |
? |
|||||
concat([item1 [, item2 [,...]]]) |
? |
? |
|||||
join(separator) |
? |
? |
|||||
pop() |
? |
? |
|||||
push([item1 [, item2 [,...]]]) |
? |
? |
|||||
reverse() |
? |
? |
|||||
shift() |
? |
? |
|||||
slice(start, end) |
? |
? |
|||||
sort(comparefn) |
? |
? |
|||||
splice(start, deleteCount [, item1 [, item2 [, ...]]]) |
? |
? |
|||||
unshift([item1 [, item2 [, ...]]]) |
? |
? |
|||||
Properties of instances |
length |
? |
? |
||||
String object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
String([value]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new String([value]) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
fromCharCode([char0 [, char1 [, ...]]]) |
? |
? |
|||||
Properties of prototype |
|||||||
constructor |
? |
? |
|||||
toString() |
? |
? |
|||||
valueOf() |
? |
? |
|||||
charAt(pos) |
? |
? |
|||||
charCodeAt(pos) |
? |
? |
|||||
concat([string1 [, string2 [, ...]]]) |
? |
? |
|||||
indexOf(searchString, position) |
? |
? |
|||||
lastIndexOf(searchString, position) |
? |
? |
|||||
localeCompare(that) |
? |
? |
|||||
match(regexp) |
? |
? |
|||||
replace(searchValue, replaceValue) |
? |
? |
|||||
search(regexp) |
? |
? |
|||||
slice(start, end) |
? |
? |
|||||
split(separator, limit) |
? |
? |
|||||
substring(start, end) |
? |
? |
|||||
toLowerCase() |
? |
? |
|||||
toLocaleLowerCase(comparefn) |
? |
? |
|||||
toUpperCase() |
? |
? |
|||||
toLocaleUpperCase() |
? |
? |
|||||
Additional properties of prototype |
substr(start, length) |
? |
? |
||||
Properties of instances |
length |
? |
? |
||||
Boolean object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Boolean([value]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Boolean([value]) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
toString() |
? |
? |
|||||
valueOf() |
? |
? |
|||||
Number object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Number([value]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Number([value]) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
MAX_VALUE |
? |
? |
|||||
MIN_VALUE |
? |
? |
|||||
NaN |
? |
? |
|||||
NEGATIVE_INFINITY |
? |
? |
|||||
POSITIVE_INFINITY |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
toString([radix]) |
? |
? |
|||||
toLocaleString() |
? |
? |
|||||
valueOf() |
? |
? |
|||||
toFixed(fractionDigits) |
? |
? |
|||||
toExponential(fractionDigits) |
? |
? |
|||||
toPrecision(precision) |
? |
? |
|||||
Math object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Value properties |
E |
? |
? |
||||
LN10 |
? |
? |
|||||
LN2 |
? |
? |
|||||
LOG2E |
? |
? |
|||||
LOG10E |
? |
? |
|||||
PI |
? |
? |
? |
? |
|||
SQRT1_2 |
? |
? |
|||||
SQRT2 |
? |
? |
? |
? |
|||
Function properties |
abs(x) |
? |
? |
||||
acos(x) |
? |
? |
|||||
asin(x) |
? |
? |
|||||
atan(x) |
? |
? |
|||||
atan2(y, x) |
? |
? |
|||||
ceil(x) |
? |
? |
|||||
cos(x) |
? |
? |
|||||
exp(x) |
? |
? |
|||||
floor(x) |
? |
? |
|||||
log(x) |
? |
? |
|||||
max([value1 [, value2 [, ...]]]) |
? |
? |
|||||
min([value1 [, value2 [, ...]]]) |
? |
? |
|||||
pow(X, Y) |
? |
? |
|||||
random(x) |
? |
? |
|||||
round(x) |
? |
? |
|||||
sin(x) |
? |
? |
|||||
sqrt(x) |
? |
? |
|||||
tan(x) |
? |
? |
|||||
Date object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) |
? |
? |
||||
new Date (value) |
? |
? |
|||||
new Date () |
? |
? |
|||||
Properties |
|||||||
prototype |
? |
? |
|||||
parse(string) |
? |
? |
|||||
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
toString() |
? |
? |
|||||
toDateString() |
? |
? |
|||||
toTimeString() |
? |
? |
|||||
toLocaleString() |
? |
? |
|||||
toLocaleDateString() |
? |
? |
|||||
toLocaleTimeString() |
? |
? |
|||||
valueOf() |
? |
? |
|||||
getTime() |
? |
? |
|||||
getFullYear() |
? |
? |
|||||
getMonth() |
? |
? |
|||||
getUTCMonth() |
? |
? |
|||||
getDate() |
? |
? |
|||||
getUTCDate() |
? |
? |
|||||
getDay() |
? |
? |
|||||
getUTCDay() |
? |
? |
|||||
getHours() |
? |
? |
|||||
getUTCHours() |
? |
? |
|||||
getMinutes() |
? |
? |
|||||
getUTCMinutes() |
? |
? |
|||||
getSeconds() |
? |
? |
|||||
getUTCSeconds() |
? |
? |
|||||
getMilliseconds() |
? |
? |
|||||
getUTCMilliseconds() |
? |
? |
|||||
getTimezoneOffset() |
? |
? |
|||||
setTime(time) |
? |
? |
|||||
setMilliseconds(ms) |
? |
? |
|||||
setUTCMilliseconds(ms) |
? |
? |
|||||
setSeconds(sec [, ms]) |
? |
? |
|||||
setUTCSeconds(sec [, ms]) |
? |
? |
|||||
setMinutes(min [, sec [, ms]]) |
? |
? |
|||||
setUTCMinutes(min [, sec [, ms]]) |
? |
? |
|||||
setHours(hour [, min [, sec [, ms]]]) |
? |
? |
|||||
setUTCHours(hour [, min [, sec [, ms]]]) |
? |
? |
|||||
setDate(date) |
? |
? |
|||||
setUTCDate(date) |
? |
? |
|||||
setMonth(month [, date]) |
? |
? |
|||||
setUTCMonth(month [, date]) |
? |
? |
|||||
setFullYear(year [, month [, date]]) |
? |
? |
|||||
setUTCFullYear(year [, month [, date]]) |
? |
? |
|||||
toUTCString() |
? |
? |
|||||
Additional properties of prototype |
getYear() |
? |
? |
||||
setYear(year) |
? |
? |
|||||
toGMTString() |
? |
? |
|||||
RegExp object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
RegExp (pattern, flags) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new RegExp (pattern, flags) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
exec(string) |
? |
? |
|||||
test(string) |
? |
? |
|||||
toString() |
? |
? |
|||||
Properties of instances |
source |
? |
? |
||||
global |
? |
? |
|||||
ignoreCase |
? |
? |
|||||
multiline |
? |
? |
|||||
lastIndex |
? |
? |
|||||
Error object
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
Error (message) |
? |
? |
? |
? |
? |
? |
Called as constructor |
new Error (message) |
? |
? |
||||
Properties |
|||||||
prototype |
? |
? |
|||||
Properties of prototype |
constructor |
? |
? |
||||
name |
? |
? |
|||||
message |
? |
? |
|||||
toString() |
? |
? |
|||||
NativeError objects
Trident |
Tasman |
Gecko |
WebKit |
KHTML |
Presto |
||
|---|---|---|---|---|---|---|---|
Name of JavaScript Engine |
JScript |
JScript |
SpiderMonkey |
JavaScriptCore |
KJS |
linear b/futhark |
|
Called as function |
EvalError (message) |
? |
? |
? |
? |
? |
? |
RangeError (message) |
? |
? |
? |
? |
? |
? |
|
ReferenceError (message) |
? |
? |
? |
? |
? |
? |
|
SyntaxError (message) |
? |
? |
? |
? |
? |
? |
|
TypeError (message) |
? |
? |
? |
? |
? |
? |
|
URIError (message) |
? |
? |
? |
? |
? |
? |
|
Called as constructor |
new EvalError (message) |
? |
? |
? |
? |
? |
? |
new RangeError (message) |
? |
? |
? |
? |
? |
? |
|
new ReferenceError (message) |
? |
? |
? |
? |
? |
? |
|
new SyntaxError (message) |
? |
? |
? |
? |
? |
? |
|
new TypeError (message) |
? |
? |
? |
? |
? |
? |
|
new URIError (message) |
? |
? |
? |
? |
? |
? |
|
Properties |
|||||||
prototype |
? |
? |
? |
? |
? |
? |
|
Properties of prototype |
constructor |
? |
? |
? |
? |
? |
? |
name |
? |
? |
? |
? |
? |
? |
|
message |
? |
? |
? |
? |
? |
? |
|
References
- ECMAScript object support in Opera
- Support table for Core JavaScript
- Support table for JavasCript Keywords
External links
- Webdevout â mostly covers Windows browsers. Extensive bug testing.