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

  • Webdevout — mostly covers Windows browsers. Extensive bug testing.