JavaScript引擎比较
下表比较在网页浏览器内使用一些知名JavaScript引擎对标准的支持。
表格解说
完整列表可参见ECMAScript引擎列表。
值
这些值指示了在每个引擎中对给定项目的支持程度。缺省的,默认为这个引擎的最新版本。但是,可以列出特定版本号;当这指示完全支持的时候,它是这个引擎完全支持这个项目的最初版本。
值 | 含义 |
---|---|
是 | 完全支持 |
否 | 从未支持 |
部份 | 只支持某些值 |
不正確 | 在所有情况下未正确实现 |
實驗性質 | 可能不完全或有缺陷 |
每日构建 | 目前正在开发;可预期完全支持 |
依情況 | 只在特定条件下支持 |
抛弃 | 不再支持 |
ECMAScript版本支持
下表中的版本号为排版引擎的版本号。JavaScript的版本号就是JavaScript引擎中SpiderMonkey的版本号,在ECMAScript Edition 5之后不再延续跟进。
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
ECMAScript引擎名称 | JScript Chakra | SpiderMonkey TraceMonkey JägerMonkey IonMonkey | JavaScriptCore SquirrelFish Extreme | Linear B Futhark Carakan | V8 |
ECMAScript Edition 3 等价于JavaScript 1.5 | 是 | 1.7[1] | 是 | 1.0 | 是 |
JavaScript 1.6 扩展 (排除E4X) | 否 | 1.8 | 部份 | 部份 | 部份 |
JavaScript 1.7 扩展 | 否 | 1.8.1 | 否 | 部份 | 否 |
JavaScript 1.8 扩展 | 否 | 1.9 | 部份 | 否 | 部份 |
JavaScript 1.8.1 扩展 | 否 | 1.9.1 | 否 | 否 | 否 |
ECMAScript Edition 5 等价于JavaScript 1.8.5 | 7.0 | 2.0 | 部份 | 是 | 是 |
E4X | 否 | 废弃于17[2] | 否 | 否 | 否 |
ECMAScript Edition 6 又称ECMAScript 2015 | 部份 | 部份 | 部份 | ||
ECMAScript 2016扩展 | 是 | 是 | 是 | ||
ES新近版本2016+扩展 | 部份 | 部份 | 是 |
标准库
全局对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
值属性 | |||||
NaN | 4.0 | 0.6 | 是 | 是 | 是 |
Infinity | 4.0 | 0.6 | 是 | 是 | 是 |
undefined | 5.5 | 0.6 | 是 | 是 | 是 |
函数属性 | |||||
eval(x) | 3.0 | 0.6 | 是 | 是 | 是 |
parseInt(string [, radix]) | 3.0 | 0.6 | 是 | 是 | 是 |
parseFloat(string) | 3.0 | 0.6 | 是 | 是 | 是 |
isNaN(number) | 4.0 | 0.6 | 是 | 是 | 是 |
isFinite(number) | 4.0 | 0.6 | 是 | 是 | 是 |
URI处理函数 | |||||
decodeURI(encodedURI) | 5.5 | 0.6 | 是 | 是 | 是 |
decodeURIComponent(encodedURIComponent) | 5.5 | 0.6 | 是 | 是 | 是 |
encodeURI(uri) | 5.5 | 0.6 | 是 | 是 | 是 |
encodeURIComponent(uriComponent) | 5.5 | 0.6 | 是 | 是 | 是 |
constructor属性 | |||||
Object | 4.0 | 是 | 是 | 是 | 是 |
Function | 4.0 | 是 | 是 | 是 | 是 |
Array | 4.0 | 是 | 是 | 是 | 是 |
String | 3.0 | 是 | 是 | 是 | 是 |
Boolean | 3.0 | 是 | 是 | 是 | 是 |
Number | 3.0 | 是 | 是 | 是 | 是 |
Date | 3.0 | 是 | 是 | 是 | 是 |
RegExp | 4.0 | 是 | 是 | 是 | 是 |
Error | 5.0 | 是 | 是 | 是 | 是 |
EvalError | 5.0 | 是 | 是 | 是 | 是 |
RangeError | 5.0 | 是 | 是 | 是 | 是 |
ReferenceError | 5.0 | 是 | 是 | 是 | 是 |
SyntaxError | 5.0 | 是 | 是 | 是 | 是 |
TypeError | 5.0 | 是 | 是 | 是 | 是 |
URIError | 5.0 | 是 | 是 | 是 | 是 |
其他属性 | |||||
Math | 3.0 | 是 | 是 | 是 | 是 |
额外属性 | |||||
escape(string) | 3.0 | 是 | 是 | 是 | 是 |
unescape(string) | 3.0 | 是 | 是 | 是 | 是 |
Object对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
调用为函数 | |||||
Object([value]) | 是 | 是 | 是 | 是 | 是 |
调用为constructor | |||||
new Object([value]) | 4.0 | 是 | 是 | 是 | 是 |
属性 | |||||
prototype | 4.0 | 是 | 是 | 是 | 是 |
prototype的属性 | |||||
constructor | 4.0 | 是 | 是 | 是 | 是 |
toString() | 4.0 | 是 | 是 | 是 | 是 |
toLocaleString() | 4.0 | 是 | 是 | 是 | 是 |
valueOf() | 4.0 | 是 | 是 | 是 | 是 |
hasOwnProperty(V) | 5.5 | 是 | 3 | 是 | 是 |
isPrototypeOf(V) | 5.5 | 是 | 3 | 是 | 是 |
propertyIsEnumerable(V) | 5.5 | 是 | 3 | 是 | 是 |
Function对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
调用为函数 | |||||
Function([[p1 [, p2 [, ...]],] body]) | ? | 是 | 是 | ? | 是 |
调用为constructor | |||||
new Function([[p1 [, p2 [, ...]],] body]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
属性 | |||||
length | ? | 1.0 | 是 | 是 | 是 |
prototype | 4.0 | 1.0 | 是 | 1.0 | 是 |
prototype的属性 | |||||
length | ? | 1.0 | 是 | ? | 是 |
constructor | 4.0 | 1.0 | 是 | 1.0 | 是 |
toString() | 4.0 | 1.0 | 是 | 1.0 | 是 |
apply(thisArg, argArray) | 4.0 | 1.0 | 是 | 1.0 | 是 |
call(thisArg [, arg1 [, arg2 [, ...]]]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
实例的属性 | |||||
length | 4.0 | 1.0 | 是 | 1.0 | 是 |
prototype | 4.0 | 1.0 | 是 | 1.0 | 是 |
Array对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
调用为函数 | |||||
Array([item1 [, item2 [, ...]]]) | 是 | 是 | 是 | 是 | 是 |
调用为constructor | |||||
new Array([item1, item2 [, ...]]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
new Array(len) | 4.0 | 1.0 | 是 | 1.0 | 是 |
属性 | |||||
prototype | 4.0 | 1.0 | 是 | 1.0 | 是 |
prototype的属性 | |||||
constructor | 4.0 | 1.0 | 是 | 1.0 | 是 |
toString() | 4.0 | 1.0 | 是 | 1.0 | 是 |
toLocaleString() | 5.5 | 1.0 | 是 | 1.0 | 是 |
concat([item1 [, item2 [,...]]]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
join(separator) | 4.0 | 1.0 | 是 | 1.0 | 是 |
pop() | 5.5 | 1.0 | 是 | 1.0 | 是 |
push([item1 [, item2 [,...]]]) | 5.5 | 1.0 | 是 | 1.0 | 是 |
reverse() | 4.0 | 1.0 | 是 | 1.0 | 是 |
shift() | 5.5 | 1.0 | 是 | 1.0 | 是 |
slice(start, end) | 4.0 | 1.0 | 是 | 1.0 | 是 |
sort(comparefn) | 4.0 | 1.0 | 是 | 1.0 | 是 |
splice(start, deleteCount [, item1 [, item2 [, ...]]]) | 5.5 | 1.0 | 是 | 1.0 | 是 |
unshift([item1 [, item2 [, ...]]]) | 5.5 | 1.0 | 是 | 1.0 | 是 |
indexOf(searchElement[, fromIndex]) | 9.0[3] | 1.8 | 522 | 2.1 | 是 |
lastIndexOf(searchElement[, fromIndex]) | 1.8 | 522 | 2.1 | 是 | |
filter(callback[, thisObject]) | 1.8 | 522 | 2.1 | 是 | |
forEach(callback[, thisObject]) | 1.8 | 522 | 2.1 | 是 | |
every(callback[, thisObject]) | 1.8 | 522 | 2.1 | 是 | |
map(callback[, thisObject]) | 1.8 | 522 | 2.1 | 是 | |
some(callback[, thisObject]) | 1.8 | 522 | 2.1 | 是 | |
reduce(callback[, initialValue]) | 1.9 | 528 | 2.5.22 | 是 | |
reduceRight(callback[, initialValue]) | 1.9 | 528 | 2.5.22 | 是 | |
实例的属性 | |||||
length | 4.0 | 1.0 | 是 | 1.0 | 是 |
String对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
调用为函数 | |||||
String([value]) | 是 | 是 | 是 | 是 | 是 |
调用为constructor | |||||
new String([value]) | 3.0 | 1.0 | 是 | 1.0 | 是 |
属性 | |||||
prototype | 4.0 | 1.0 | 是 | 1.0 | 是 |
fromCharCode([char0 [, char1 [, ...]]]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
prototype的属性 | |||||
constructor | 4.0 | 1.0 | 是 | 1.0 | 是 |
toString() | 3.0 | 1.0 | 是 | 1.0 | 是 |
valueOf() | 3.0 | 1.0 | 是 | 1.0 | 是 |
charAt(pos) | 3.0 | 1.0 | 是 | 1.0 | 是 |
charCodeAt(pos) | 5.5 | 1.0 | 是 | 1.0 | 是 |
concat([string1 [, string2 [, ...]]]) | 4.0 | 1.0 | 是 | 1.0 | 是 |
indexOf(searchString, position) | 3.0 | 1.0 | 是 | 1.0 | 是 |
lastIndexOf(searchString, position) | 3.0 | 1.0 | 是 | 1.0 | 是 |
localeCompare(that) | 5.5 | 1.0 | 是 | 1.0 | 是 |
match(regexp) | 4.0 | 1.0 | 是 | 1.0 | 是 |
replace(searchValue, replaceValue) | 3.0 | 1.0 | 是 | 1.0 | 是 |
search(regexp) | 4.0 | 1.0 | 是 | 1.0 | 是 |
slice(start, end) | 4.0 | 1.0 | 是 | 1.0 | 是 |
split(separator, limit) | 4.0 | 1.0 | 是 | 1.0 | 是 |
substring(start, end) | 3.0 | 1.0 | 是 | 1.0 | 是 |
toLowerCase() | 3.0 | 1.0 | 是 | 1.0 | 是 |
toLocaleLowerCase(comparefn) | 3.0 | 1.0 | 是 | 1.0 | 是 |
toUpperCase() | 3.0 | 1.0 | 是 | 1.0 | 是 |
toLocaleUpperCase() | 3.0 | 1.0 | 是 | 1.0 | 是 |
prototype的额外属性 | |||||
substr(start, length) | 4.0 | 1.0 | 是 | 1.0 | 是 |
实例的属性 | |||||
length | 3.0 | 1.0 | 是 | 1.0 | 是 |
Boolean对象
Trident | Gecko | WebKit | Presto | Blink | |
---|---|---|---|---|---|
调用为函数 | |||||
Boolean([value]) | 是 | 是 | 是 | 是 | 是 |
调用为constructor | |||||
new Boolean([value]) | 3.0 | 是 | 是 | 是 | 是 |
属性 | |||||
prototype | 4.0 | 是 | 是 | 是 | 是 |
prototype的属性 | |||||
constructor | 4.0 | 是 | 是 | 是 | 是 |
toString() | 4.0 | 是 | 是 | 是 | 是 |
valueOf() | 4.0 | 是 | 是 | 是 | 是 |
Number对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
调用为函数 | ||||
Number([value]) | ? | 是 | 是 | ? |
调用为constructor | ||||
new Number([value]) | 3.0 | 1.0 | 是 | 1.0 |
属性 | ||||
prototype | 4.0 | 1.0 | 是 | 1.0 |
MAX_VALUE | 4.0 | 1.0 | 是 | 1.0 |
MIN_VALUE | 4.0 | 1.0 | 是 | 1.0 |
NaN | 4.0 | 1.0 | 是 | 1.0 |
NEGATIVE_INFINITY | 4.0 | 1.0 | 是 | 1.0 |
POSITIVE_INFINITY | 4.0 | 1.0 | 是 | 1.0 |
prototype的属性 | ||||
constructor | 4.0 | 1.0 | 是 | 1.0 |
toString([radix]) | 4.0 | 1.0 | 是 | 1.0 |
toLocaleString() | 5.5 | 1.0 | 是 | 1.0 |
valueOf() | 4.0 | 1.0 | 是 | 1.0 |
toFixed(fractionDigits) | 5.5 | 1.0 | 是 | 1.0 |
toExponential(fractionDigits) | 5.5 | 1.0 | 是 | 1.0 |
toPrecision(precision) | 5.5 | 1.0 | 是 | 1.0 |
Math对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
值属性 | ||||
E | 3.0 | 1.0 | 是 | 1.0 |
LN10 | 3.0 | 1.0 | 是 | 1.0 |
LN2 | 3.0 | 1.0 | 是 | 1.0 |
LOG2E | 3.0 | 1.0 | 是 | 1.0 |
LOG10E | 3.0 | 1.0 | 是 | 1.0 |
PI | 是 | 是 | 是 | 是 |
SQRT1_2 | 3.0 | 1.0 | 是 | 1.0 |
SQRT2 | 是 | 是 | 是 | 是 |
函数属性 | ||||
abs(x) | 3.0 | 1.0 | 是 | 1.0 |
acos(x) | 3.0 | 1.0 | 是 | 1.0 |
asin(x) | 3.0 | 1.0 | 是 | 1.0 |
atan(x) | 3.0 | 1.0 | 是 | 1.0 |
atan2(y, x) | 3.0 | 1.0 | 是 | 1.0 |
ceil(x) | 3.0 | 1.0 | 是 | 1.0 |
cos(x) | 3.0 | 1.0 | 是 | 1.0 |
exp(x) | 3.0 | 1.0 | 是 | 1.0 |
floor(x) | 3.0 | 1.0 | 是 | 1.0 |
log(x) | 3.0 | 1.0 | 是 | 1.0 |
max([value1 [, value2 [, ...]]]) | 3.0 | 1.0 | 是 | 1.0 |
min([value1 [, value2 [, ...]]]) | 3.0 | 1.0 | 是 | 1.0 |
pow(x, y) | 3.0 | 1.0 | 是 | 1.0 |
random() | 3.0 | 1.0 | 是 | 1.0 |
round(x) | 3.0 | 1.0 | 是 | 1.0 |
sin(x) | 3.0 | 1.0 | 是 | 1.0 |
sqrt(x) | 3.0 | 1.0 | 是 | 1.0 |
tan(x) | 3.0 | 1.0 | 是 | 1.0 |
Date对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
调用为函数 | ||||
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) | ? | ? | ? | ? |
调用为constructor | ||||
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) | 4.0 | 1.0 | 是 | 1.0 |
new Date (value) | 4.0 | 1.0 | 是 | 1.0 |
new Date () | 4.0 | 1.0 | 是 | 1.0 |
属性 | ||||
prototype | 4.0 | 1.0 | 是 | 1.0 |
parse(string) | 3.0 | 1.0 | 是 | 1.0 |
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) | 3.0 | 1.0 | 是 | 1.0 |
prototype的属性 | ||||
constructor | 4.0 | 1.0 | 是 | 1.0 |
toString() | 4.0 | 1.0 | 是 | 1.0 |
toDateString() | 4.0 | 1.0 | 是 | 1.0 |
toTimeString() | 4.0 | 1.0 | 是 | 1.0 |
toLocaleString() | 4.0 | 1.0 | 是 | 1.0 |
toLocaleDateString() | 4.0 | 1.0 | 是 | 1.0 |
toLocaleTimeString() | 4.0 | 1.0 | 是 | 1.0 |
valueOf() | 4.0 | 1.0 | 是 | 1.0 |
getTime() | 3.0 | 1.0 | 是 | 1.0 |
getFullYear() | 4.0 | 1.0 | 是 | 1.0 |
getMonth() | 3.0 | 1.0 | 是 | 1.0 |
getUTCMonth() | 4.0 | 1.0 | 是 | 1.0 |
getDate() | 3.0 | 1.0 | 是 | 1.0 |
getUTCDate() | 4.0 | 1.0 | 是 | 1.0 |
getDay() | 3.0 | 1.0 | 是 | 1.0 |
getUTCDay() | 4.0 | 1.0 | 是 | 1.0 |
getHours() | 3.0 | 1.0 | 是 | 1.0 |
getUTCHours() | 4.0 | 1.0 | 是 | 1.0 |
getMinutes() | 3.0 | 1.0 | 是 | 1.0 |
getUTCMinutes() | 4.0 | 1.0 | 是 | 1.0 |
getSeconds() | 3.0 | 1.0 | 是 | 1.0 |
getUTCSeconds() | 4.0 | 1.0 | 是 | 1.0 |
getMilliseconds() | 4.0 | 1.0 | 是 | 1.0 |
getUTCMilliseconds() | 4.0 | 1.0 | 是 | 1.0 |
getTimezoneOffset() | 4.0 | 1.0 | 是 | 1.0 |
setTime(time) | 3.0 | 1.0 | 是 | 1.0 |
setMilliseconds(ms) | 4.0 | 1.0 | 是 | 1.0 |
setUTCMilliseconds(ms) | 4.0 | 1.0 | 是 | 1.0 |
setSeconds(sec [, ms]) | 3.0 | 1.0 | 是 | 1.0 |
setUTCSeconds(sec [, ms]) | 4.0 | 1.0 | 是 | 1.0 |
setMinutes(min [, sec [, ms]]) | 3.0 | 1.0 | 是 | 1.0 |
setUTCMinutes(min [, sec [, ms]]) | 4.0 | 1.0 | 是 | 1.0 |
setHours(hour [, min [, sec [, ms]]]) | 4.0 | 1.0 | 是 | 1.0 |
setUTCHours(hour [, min [, sec [, ms]]]) | 4.0 | 1.0 | 是 | 1.0 |
setDate(date) | 4.0 | 1.0 | 是 | 1.0 |
setUTCDate(date) | 4.0 | 1.0 | 是 | 1.0 |
setMonth(month [, date]) | 3.0 | 1.0 | 是 | 1.0 |
setUTCMonth(month [, date]) | 4.0 | 1.0 | 是 | 1.0 |
setFullYear(year [, month [, date]]) | 4.0 | 1.0 | 是 | 1.0 |
setUTCFullYear(year [, month [, date]]) | 4.0 | 1.0 | 是 | 1.0 |
toUTCString() | 4.0 | 1.0 | 是 | 1.0 |
prototype的额外属性 | ||||
getYear() | 3.0 | 1.0 | 是 | 1.0 |
setYear(year) | 3.0 | 1.0 | 是 | 1.0 |
toGMTString() | 4.0 | 1.0 | 是 | 1.0 |
RegExp对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
调用为函数 | ||||
RegExp (pattern, flags) | ? | ? | ? | ? |
调用为constructor | ||||
new RegExp (pattern, flags) | 4.0 | 1.0 | 是 | 1.0 |
属性 | ||||
prototype | 4.0 | 1.0 | 是 | 1.0 |
prototype的属性 | ||||
constructor | 4.0 | 1.0 | 是 | 1.0 |
exec(string) | 4.0 | 1.0 | 是 | 1.0 |
test(string) | 4.0 | 1.0 | 是 | 1.0 |
toString() | 4.0 | 1.0 | 是 | 1.0 |
实例的属性 | ||||
source | 4.0 | 1.0 | 是 | 1.0 |
global | 4.0 | 1.0 | 是 | 1.0 |
ignoreCase | 5.5 | 1.0 | 是 | 1.0 |
multiline | 5.5 | 1.0 | 是 | 1.0 |
lastIndex | 4.0 | 1.0 | 是 | 1.0 |
Error对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
调用为函数 | ||||
Error (message) | ? | ? | ? | ? |
调用为constructor | ||||
new Error (message) | 5.0 | 1.0 | 是 | 1.0 |
属性 | ||||
prototype | 5.0 | 1.0 | 是 | 1.0 |
prototype的属性 | ||||
constructor | 5.0 | 1.0 | 是 | 1.0 |
name | 5.5 | 1.0 | 是 | 1.0 |
message | 5.5 | 1.0 | 是 | 1.0 |
toString() | 5.0 | 1.0 | 是 | 1.0 |
NativeError对象
Trident | Gecko | WebKit | Presto | |
---|---|---|---|---|
调用为函数 | ||||
EvalError (message) | ? | 1.0 | 是 | ? |
RangeError (message) | ? | 1.0 | 是 | ? |
ReferenceError (message) | ? | 1.0 | 是 | ? |
SyntaxError (message) | ? | 1.0 | 是 | ? |
TypeError (message) | ? | 1.0 | 是 | ? |
URIError (message) | ? | 1.0 | 是 | ? |
调用为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 | 是 | ? |
属性 | ||||
prototype | ? | 1.0 | ? | ? |
prototype的属性 | ||||
constructor | ? | 1.0 | ? | ? |
name | ? | 1.0 | 是 | ? |
message | ? | 1.0 | 是 | ? |
引用
延伸阅读
- ECMAScript object support in Opera
- JavaScript tests & Compatibility tables (页面存档备份,存于互联网档案馆)
- ECMAScript 6 compatibility table(页面存档备份,存于互联网档案馆)
外部链接
- Webdevout (页面存档备份,存于互联网档案馆) – mostly covers Windows browsers. Extensive bug testing.
|
|