From Wikipedia, the free encyclopedia
The following tables compare ECMAScript (particularly 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.
[edit] Explanation of the tables
[edit] Engine nomenclature
Rather than the names of web browsers, the names of the underlying engines are used. The browsers that use the various engines are listed below.
[edit] Values
Values indicate the level of support in the most recent version of the layout engine, or (if a version number is given) in the specified version. Version numbers without any other value indicate the version at which the layout engine first fully supported the feature.
Value Meaning
Yes Indicates that the layout engine fully supports this property when valid values are used.
No Indicates that this property is completely ignored.
Partial Indicates that the property is understood, but that not all values are supported. Supported values are implemented correctly.
Incorrect Indicates that the property is understood, but that it is not implemented correctly in all cases.
Experimental Indicates that the property is provided in experimental form under an alternative name, generally with only partial functionality.
[edit] ECMAScript version support
ECMAScript Version Edition 3 Yes Yes 0.6 Yes Yes 7.0 Yes (?)
JavaScript 1.5 extensions No No 0.6 Yes Yes (?) 7.0 ?
JavaScript 1.6 extensions
(excluding E4X) No No 1.8 Partial ? ? No
JavaScript 1.7 extensions No No 1.8.1 No No No No
JavaScript 1.8 extensions No No 1.9 No No No No
E4X No No 1.8 No No No No
Edition 4 (future) No No Planned for 2.0 No No No No
[edit] Standard Library
[edit] Global object
Value properties NaN 4.0 ? 0.6 Yes ? Yes ?
Infinity 4.0 ? 0.6 Yes ? Yes ?
undefined 5.5 ? 0.6 Yes ? Yes ?
Function properties eval(x) 3.0 ? 0.6 Yes ? Yes ?
parseInt(string [, radix]) 3.0 ? 0.6 Yes ? Yes ?
parseFloat(string) 3.0 ? 0.6 Yes ? Yes ?
isNaN(number) 4.0 ? 0.6 Yes ? Yes ?
isFinite(number) 4.0 ? 0.6 Yes ? Yes ?
URI handling functions decodeURI(encodedURI) 5.5 ? 0.6 Yes ? Yes ?
decodeURIComponent(encodedURIComponent) 5.5 ? 0.6 Yes ? Yes ?
encodeURI(uri) 5.5 ? 0.6 Yes ? Yes ?
encodeURIComponent(uriComponent) 5.5 ? 0.6 Yes ? Yes ?
Constructor properties Object 4.0 ? Yes Yes ? Yes ?
Function 4.0 ? Yes Yes ? Yes ?
Array 4.0 ? Yes Yes ? Yes ?
String 3.0 ? Yes Yes ? Yes ?
Boolean 3.0 ? Yes Yes ? Yes ?
Number 3.0 ? Yes Yes ? Yes ?
Date 3.0 ? Yes Yes ? Yes ?
RegExp 4.0 ? Yes Yes ? Yes ?
Error 5.0 ? Yes Yes ? Yes ?
EvalError 5.0 ? Yes No ? No ?
RangeError 5.0 ? Yes No ? No ?
ReferenceError 5.0 ? Yes No ? No ?
SyntaxError 5.0 ? Yes No ? No ?
TypeError 5.0 ? Yes No ? No ?
URIError 5.0 ? Yes No ? No ?
Other properties Math 3.0 ? Yes Yes ? Yes ?
Additional properties escape(string) 3.0 ? Yes Yes ? Yes ?
unescape(string) 3.0 ? Yes Yes ? Yes ?
[edit] Object object
Called as function Object([value]) Yes ? Yes Yes ? Yes ?
Called as constructor new Object([value]) 4.0 ? Yes Yes ? Yes ?
Properties
prototype 4.0 ? Yes Yes ? Yes ?
Properties of prototype constructor 4.0 ? Yes Yes ? Yes ?
toString() 4.0 ? Yes Yes ? Yes ?
toLocaleString() 4.0 ? Yes Yes ? Yes ?
valueOf() 4.0 ? Yes Yes ? Yes ?
hasOwnProperty(V) 5.5 ? Yes 3 ? Yes ?
isPrototypeOf(V) 5.5 ? Yes 3 ? Yes ?
propertyIsEnumerable(V) 5.5 ? Yes 3 ? Yes ?
[edit] Function object
Called as function Function([[p1 [, p2 [, ...]],] body]) ? ? ? ? ? ? ?
Called as constructor new Function([[p1 [, p2 [, ...]],] body]) 4.0 ? 1.0 Yes ? 7.0 ?
Properties length ? ? ? ? ? Yes ?
prototype 4.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype length ? ? ? ? ? ? ?
constructor 4.0 ? 1.0 Yes ? 7.0 ?
toString() 4.0 ? 1.0 Yes ? 7.0 ?
apply(thisArg, argArray) 4.0 ? 1.0 Yes ? 7.0 ?
call(thisArg [, arg1 [, arg2 [, ...]]]) 4.0 ? 1.0 Yes ? 7.0 ?
Properties of instances length 4.0 ? 1.0 Yes ? 7.0 ?
prototype 4.0 ? 1.0 Yes ? 7.0 ?
[edit] Array object
Called as function Array([item1 [, item2 [, ...]]]) ? ? ? ? ? ? ?
Called as constructor new Array([item1, item2 [, ...]]) 4.0 ? 1.0 Yes ? 7.0 ?
new Array(len) 4.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 4.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype
constructor 4.0 ? 1.0 Yes ? 7.0 ?
toString() 4.0 ? 1.0 Yes ? 7.0 ?
toLocaleString() 5.5 ? 1.0 Yes ? 7.0 ?
concat([item1 [, item2 [,...]]]) 4.0 ? 1.0 Yes ? 7.0 ?
join(separator) 4.0 ? 1.0 Yes ? 7.0 ?
pop() 5.5 ? 1.0 Yes ? 7.0 ?
push([item1 [, item2 [,...]]]) 5.5 ? 1.0 Yes ? 7.0 ?
reverse() 4.0 ? 1.0 Yes ? 7.0 ?
shift() 5.5 ? 1.0 Yes ? 7.0 ?
slice(start, end) 4.0 ? 1.0 Yes ? 7.0 ?
sort(comparefn) 4.0 ? 1.0 Yes ? 7.0 ?
splice(start, deleteCount [, item1 [, item2 [, ...]]]) 5.5 ? 1.0 Yes ? 7.0 ?
unshift([item1 [, item2 [, ...]]]) 5.5 ? 1.0 Yes ? 7.0 ?
indexOf(searchElement[, fromIndex]) ? ? 1.8 ? ? ? ?
lastIndexOf(searchElement[, fromIndex]) ? ? 1.8 ? ? ? ?
filter(callback[, thisObject]) ? ? 1.8 ? ? ? ?
forEach(callback[, thisObject]) ? ? 1.8 ? ? ? ?
every(callback[, thisObject]) ? ? 1.8 ? ? ? ?
map(callback[, thisObject]) ? ? 1.8 ? ? ? ?
some(callback[, thisObject]) ? ? 1.8 ? ? ? ?
reduce(callback[, initialValue]) ? ? 1.9 ? ? ? ?
reduceRight(callback[, initialValue]) ? ? 1.9 ? ? ? ?
Properties of instances length 4.0 ? 1.0 Yes ? 7.0 ?
[edit] String object
Called as function String([value]) ? ? ? ? ? ? ?
Called as constructor new String([value]) 3.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 4.0 ? 1.0 Yes ? 7.0 ?
fromCharCode([char0 [, char1 [, ...]]]) 4.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype
constructor 4.0 ? 1.0 Yes ? 7.0 ?
toString() 3.0 ? 1.0 Yes ? 7.0 ?
valueOf() 3.0 ? 1.0 Yes ? 7.0 ?
charAt(pos) 3.0 ? 1.0 Yes ? 7.0 ?
charCodeAt(pos) 5.5 ? 1.0 Yes ? 7.0 ?
concat([string1 [, string2 [, ...]]]) 4.0 ? 1.0 Yes ? 7.0 ?
indexOf(searchString, position) 3.0 ? 1.0 Yes ? 7.0 ?
lastIndexOf(searchString, position) 3.0 ? 1.0 Yes ? 7.0 ?
localeCompare(that) 5.5 ? 1.0 Yes ? 7.0 ?
match(regexp) 4.0 ? 1.0 Yes ? 7.0 ?
replace(searchValue, replaceValue) 3.0 ? 1.0 Yes ? 7.0 ?
search(regexp) 4.0 ? 1.0 Yes ? 7.0 ?
slice(start, end) 4.0 ? 1.0 Yes ? 7.0 ?
split(separator, limit) 4.0 ? 1.0 Yes ? 7.0 ?
substring(start, end) 3.0 ? 1.0 Yes ? 7.0 ?
toLowerCase() 3.0 ? 1.0 Yes ? 7.0 ?
toLocaleLowerCase(comparefn) 3.0 ? 1.0 No ? 7.0 ?
toUpperCase() 3.0 ? 1.0 Yes ? 7.0 ?
toLocaleUpperCase() 3.0 ? 1.0 No ? 7.0 ?
Additional properties of prototype substr(start, length) 4.0 ? 1.0 Yes ? 7.0 ?
Properties of instances length 3.0 ? 1.0 Yes ? 7.0 ?
[edit] Boolean object
Called as function Boolean([value]) ? ? ? ? ? ? ?
Called as constructor new Boolean([value]) 3.0 ? Yes Yes ? Yes ?
Properties
prototype 4.0 ? Yes Yes ? Yes ?
Properties of prototype constructor 4.0 ? Yes Yes ? Yes ?
toString() 4.0 ? Yes Yes ? Yes ?
valueOf() 4.0 ? Yes Yes ? Yes ?
[edit] Number object
Called as function Number([value]) ? ? ? ? ? ? ?
Called as constructor new Number([value]) 3.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 4.0 ? 1.0 Yes ? 7.0 ?
MAX_VALUE 4.0 ? 1.0 Yes ? 7.0 ?
MIN_VALUE 4.0 ? 1.0 Yes ? 7.0 ?
NaN 4.0 ? 1.0 Yes ? 7.0 ?
NEGATIVE_INFINITY 4.0 ? 1.0 Yes ? 7.0 ?
POSITIVE_INFINITY 4.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype constructor 4.0 ? 1.0 Yes ? 7.0 ?
toString([radix]) 4.0 ? 1.0 Yes ? 7.0 ?
toLocaleString() 5.5 ? 1.0 Yes ? 7.0 ?
valueOf() 4.0 ? 1.0 Yes ? 7.0 ?
toFixed(fractionDigits) 5.5 ? 1.0 Yes ? 7.0 ?
toExponential(fractionDigits) 5.5 ? 1.0 Yes ? 7.0 ?
toPrecision(precision) 5.5 ? 1.0 Yes ? 7.0 ?
[edit] Math object
Value properties E 3.0 ? 1.0 Yes ? 7.0 ?
LN10 3.0 ? 1.0 Yes ? 7.0 ?
LN2 3.0 ? 1.0 Yes ? 7.0 ?
LOG2E 3.0 ? 1.0 Yes ? 7.0 ?
LOG10E 3.0 ? 1.0 Yes ? 7.0 ?
PI Yes ? Yes Yes ? Yes ?
SQRT1_2 3.0 ? 1.0 Yes ? 7.0 ?
SQRT2 ? ? Yes Yes ? Yes ?
Function properties abs(x) 3.0 ? 1.0 Yes ? 7.0 ?
acos(x) 3.0 ? 1.0 Yes ? 7.0 ?
asin(x) 3.0 ? 1.0 Yes ? 7.0 ?
atan(x) 3.0 ? 1.0 Yes ? 7.0 ?
atan2(y, x) 3.0 ? 1.0 Yes ? 7.0 ?
ceil(x) 3.0 ? 1.0 Yes ? 7.0 ?
cos(x) 3.0 ? 1.0 Yes ? 7.0 ?
exp(x) 3.0 ? 1.0 Yes ? 7.0 ?
floor(x) 3.0 ? 1.0 Yes ? 7.0 ?
log(x) 3.0 ? 1.0 Yes ? 7.0 ?
max([value1 [, value2 [, ...]]]) 3.0 ? 1.0 Yes ? 7.0 ?
min([value1 [, value2 [, ...]]]) 3.0 ? 1.0 Yes ? 7.0 ?
pow(x, y) 3.0 ? 1.0 Yes ? 7.0 ?
random() 3.0 ? 1.0 Yes ? 7.0 ?
round(x) 3.0 ? 1.0 Yes ? 7.0 ?
sin(x) 3.0 ? 1.0 Yes ? 7.0 ?
sqrt(x) 3.0 ? 1.0 Yes ? 7.0 ?
tan(x) 3.0 ? 1.0 Yes ? 7.0 ?
[edit] Date object
Called as function Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) ? ? ? ? ? ? ?
Called as constructor new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 4.0 ? 1.0 Yes ? 7.0 ?
new Date (value) 4.0 ? 1.0 Yes ? 7.0 ?
new Date () 4.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 4.0 ? 1.0 Yes ? 7.0 ?
parse(string) 3.0 ? 1.0 Yes ? 7.0 ?
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 3.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype constructor 4.0 ? 1.0 Yes ? 7.0 ?
toString() 4.0 ? 1.0 Yes ? 7.0 ?
toDateString() 4.0 ? 1.0 Yes ? 7.0 ?
toTimeString() 4.0 ? 1.0 Yes ? 7.0 ?
toLocaleString() 4.0 ? 1.0 Yes ? 7.0 ?
toLocaleDateString() 4.0 ? 1.0 Yes ? 7.0 ?
toLocaleTimeString() 4.0 ? 1.0 Yes ? 7.0 ?
valueOf() 4.0 ? 1.0 Yes ? 7.0 ?
getTime() 3.0 ? 1.0 Yes ? 7.0 ?
getFullYear() 4.0 ? 1.0 Yes ? 7.0 ?
getMonth() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCMonth() 4.0 ? 1.0 Yes ? 7.0 ?
getDate() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCDate() 4.0 ? 1.0 Yes ? 7.0 ?
getDay() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCDay() 4.0 ? 1.0 Yes ? 7.0 ?
getHours() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCHours() 4.0 ? 1.0 Yes ? 7.0 ?
getMinutes() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCMinutes() 4.0 ? 1.0 Yes ? 7.0 ?
getSeconds() 3.0 ? 1.0 Yes ? 7.0 ?
getUTCSeconds() 4.0 ? 1.0 Yes ? 7.0 ?
getMilliseconds() 4.0 ? 1.0 Yes ? 7.0 ?
getUTCMilliseconds() 4.0 ? 1.0 Yes ? 7.0 ?
getTimezoneOffset() 4.0 ? 1.0 Yes ? 7.0 ?
setTime(time) 3.0 ? 1.0 Yes ? 7.0 ?
setMilliseconds(ms) 4.0 ? 1.0 Yes ? 7.0 ?
setUTCMilliseconds(ms) 4.0 ? 1.0 Yes ? 7.0 ?
setSeconds(sec [, ms]) 3.0 ? 1.0 Yes ? 7.0 ?
setUTCSeconds(sec [, ms]) 4.0 ? 1.0 Yes ? 7.0 ?
setMinutes(min [, sec [, ms]]) 3.0 ? 1.0 Yes ? 7.0 ?
setUTCMinutes(min [, sec [, ms]]) 4.0 ? 1.0 Yes ? 7.0 ?
setHours(hour [, min [, sec [, ms]]]) 4.0 ? 1.0 Yes ? 7.0 ?
setUTCHours(hour [, min [, sec [, ms]]]) 4.0 ? 1.0 Yes ? 7.0 ?
setDate(date) 4.0 ? 1.0 Yes ? 7.0 ?
setUTCDate(date) 4.0 ? 1.0 Yes ? 7.0 ?
setMonth(month [, date]) 3.0 ? 1.0 Yes ? 7.0 ?
setUTCMonth(month [, date]) 4.0 ? 1.0 Yes ? 7.0 ?
setFullYear(year [, month [, date]]) 4.0 ? 1.0 Yes ? 7.0 ?
setUTCFullYear(year [, month [, date]]) 4.0 ? 1.0 Yes ? 7.0 ?
toUTCString() 4.0 ? 1.0 Yes ? 7.0 ?
Additional properties of prototype getYear() 3.0 ? 1.0 Yes ? 7.0 ?
setYear(year) 3.0 ? 1.0 Yes ? 7.0 ?
toGMTString() 4.0 ? 1.0 Yes ? 7.0 ?
[edit] RegExp object
Called as function RegExp (pattern, flags) ? ? ? ? ? ? ?
Called as constructor new RegExp (pattern, flags) 4.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 4.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype constructor 4.0 ? 1.0 Yes ? 7.0 ?
exec(string) 4.0 ? 1.0 Yes ? 7.0 ?
test(string) 4.0 ? 1.0 Yes ? 7.0 ?
toString() 4.0 ? 1.0 Yes ? 7.0 ?
Properties of instances source 4.0 ? 1.0 Yes ? 7.0 ?
global 4.0 ? 1.0 Yes ? 7.0 ?
ignoreCase 5.5 ? 1.0 Yes ? 7.0 ?
multiline 5.5 ? 1.0 Yes ? 7.0 ?
lastIndex 4.0 ? 1.0 Yes ? 7.0 ?
[edit] Error object
Called as function Error (message) ? ? ? ? ? ? ?
Called as constructor new Error (message) 5.0 ? 1.0 Yes ? 7.0 ?
Properties
prototype 5.0 ? 1.0 Yes ? 7.0 ?
Properties of prototype constructor 5.0 ? 1.0 Yes ? 7.0 ?
name 5.5 ? 1.0 Yes ? 7.0 ?
message 5.5 ? 1.0 Yes ? 7.0 ?
toString() 5.0 ? 1.0 Yes ? 7.0 ?
[edit] NativeError objects
Called as function EvalError (message) ? ? 1.0 ? ? ? ?
RangeError (message) ? ? 1.0 ? ? ? ?
ReferenceError (message) ? ? 1.0 ? ? ? ?
SyntaxError (message) ? ? 1.0 ? ? ? ?
TypeError (message) ? ? 1.0 ? ? ? ?
URIError (message) ? ? 1.0 ? ? ? ?
Called as constructor new EvalError (message) ? ? 1.0 ? ? ? ?
new RangeError (message) ? ? 1.0 ? ? ? ?
new ReferenceError (message) ? ? 1.0 ? ? ? ?
new SyntaxError (message) ? ? 1.0 ? ? ? ?
new TypeError (message) ? ? 1.0 ? ? ? ?
new URIError (message) ? ? 1.0 ? ? ? ?
Properties
prototype ? ? 1.0 ? ? ? ?
Properties of prototype constructor ? ? 1.0 ? ? ? ?
name ? ? 1.0 ? ? ? ?
message ? ? 1.0 ? ? ? ?
[edit] References