Porównanie silników JavaScript - Comparison of JavaScript engines

W poniższych tabelach porównano obsługę standardów dla niektórych znanych silników JavaScript / ECMAScript używanych w przeglądarkach internetowych .

Objaśnienie tabel

Zobacz listę silników ECMAScript, aby zapoznać się z pełną listą.

Wartości

Wskazują poziom wsparcia dla danej pozycji w każdym silniku. Domyślnie domniemana jest najnowsza wersja aparatu. Można jednak podać konkretny numer wersji; gdy oznacza to pełne wsparcie, jest to początkowa wersja silnika w pełni obsługująca element.

Legenda
Wartość Znaczenie
tak W pełni obsługiwane
Nie Nigdy nie był obsługiwany
Częściowy Obsługiwane są tylko niektóre wartości
Błędny Nie zaimplementowano poprawnie we wszystkich przypadkach
Eksperymentalny Może być niekompletny lub zawiera błędy
Nocna kompilacja Obecnie w fazie rozwoju; oczekiwane jest pełne wsparcie
Zależy Obsługiwane tylko w określonych warunkach
porzucone Nie jest już obsługiwany

Obsługa wersji ECMAScript

Przegląd obsługi wersji ECMAScript
Silnik układu przeglądarki Trójząb Gekon WebKit Presto Migać
Odpowiedni silnik JavaScript JScript / Chakra Pająk Małpa JavaScriptCore Liniowy B / Futhark / Carakan V8
ECMAScript Edition 3 tak 0.6 tak 1.0 tak
ECMAScript Edition 5 5.0 2.0 Częściowy tak tak
ECMAScript Edition 6
Rozszerzenia JavaScript 1.5 Nie 0.6 tak 1.0 tak
Rozszerzenia JavaScript 1.6
(z wyjątkiem E4X )
Nie 1.8 Częściowy Częściowy Częściowy
Rozszerzenia JavaScript 1.7 Nie 1.8.1 Nie Częściowy Nie
Rozszerzenia JavaScript 1.8 Nie 1.9 Częściowy Nie Częściowy
Rozszerzenia JavaScript 1.8.1 Nie 1.9.1 Nie Nie Nie
JScript .NET rozszerzenia Nie Nie Nie Nie Nie
Rozszerzenia ActionScript Nie Nie Nie Nie Nie
E4X Nie porzucone Nie Nie Nie

Biblioteka standardowa

Obiekt globalny

Implementacja obiektów globalnych
Obiekt globalny Trójząb Gekon WebKit Presto Migać
Właściwości wartości
NaN 4.0 0.6 tak tak tak
Infinity 4.0 0.6 tak tak tak
undefined 5.5 0.6 tak tak tak
Właściwości funkcji
eval(x) 3.0 0.6 tak tak tak
parseInt(string [, radix]) 3.0 0.6 tak tak tak
parseFloat(string) 3.0 0.6 tak tak tak
isNaN(number) 4.0 0.6 tak tak tak
isFinite(number) 4.0 0.6 tak tak tak
Funkcje obsługi URI
decodeURI(encodedURI) 5.5 0.6 tak tak tak
decodeURIComponent(encodedURIComponent) 5.5 0.6 tak tak tak
encodeURI(uri) 5.5 0.6 tak tak tak
encodeURIComponent(uriComponent) 5.5 0.6 tak tak tak
Właściwości konstruktora
Object 4.0 tak tak tak tak
Function 4.0 tak tak tak tak
Array 4.0 tak tak tak tak
String 3.0 tak tak tak tak
Boolean 3.0 tak tak tak tak
Number 3.0 tak tak tak tak
Date 3.0 tak tak tak tak
RegExp 4.0 tak tak tak tak
Error 5.0 tak tak tak tak
EvalError 5.0 tak tak tak tak
RangeError 5.0 tak tak tak tak
ReferenceError 5.0 tak tak tak tak
SyntaxError 5.0 tak tak tak tak
TypeError 5.0 tak tak tak tak
URIError 5.0 tak tak tak tak
Inne właściwości
Math 3.0 tak tak tak tak
Dodatkowe właściwości
escape(string) 3.0 tak tak tak tak
unescape(string) 3.0 tak tak tak tak

Obiekt obiektu

Realizacja obiektów obiektowych
Obiekt obiektu Trójząb Gekon WebKit Presto Migać
Nazywany funkcją
Object([value]) tak tak tak tak tak
Nazywany konstruktorem
new Object([value]) 4.0 tak tak tak tak
Nieruchomości
prototype 4.0 tak tak tak tak
Właściwości prototypu
constructor 4.0 tak tak tak tak
toString() 4.0 tak tak tak tak
toLocaleString() 4.0 tak tak tak tak
valueOf() 4.0 tak tak tak tak
hasOwnProperty(V) 5.5 tak 3 tak tak
isPrototypeOf(V) 5.5 tak 3 tak tak
propertyIsEnumerable(V) 5.5 tak 3 tak tak

Obiekt funkcji

Implementacja obiektów funkcyjnych
Obiekt funkcji Trójząb Gekon WebKit Presto Migać
Nazywany funkcją
Function([[p1 [, p2 [, ...]],] body]) ? tak tak ? tak
Nazywany konstruktorem
new Function([[p1 [, p2 [, ...]],] body]) 4.0 1.0 tak 1.0 tak
Nieruchomości
length ? 1.0 tak tak tak
prototype 4.0 1.0 tak 1.0 tak
Właściwości prototypu
length ? 1.0 tak ? tak
constructor 4.0 1.0 tak 1.0 tak
toString() 4.0 1.0 tak 1.0 tak
apply(thisArg, argArray) 4.0 1.0 tak 1.0 tak
call(thisArg [, arg1 [, arg2 [, ...]]]) 4.0 1.0 tak 1.0 tak
Właściwości instancji
length 4.0 1.0 tak 1.0 tak
prototype 4.0 1.0 tak 1.0 tak

Obiekt Array

Implementacja obiektów tablicowych
Obiekt Array Trójząb Gekon WebKit Presto Migać
Nazywany funkcją
Array([item1 [, item2 [, ...]]]) tak tak tak tak tak
Nazywany konstruktorem
new Array([item1, item2 [, ...]]) 4.0 1.0 tak 1.0 tak
new Array(len) 4.0 1.0 tak 1.0 tak
Nieruchomości
prototype 4.0 1.0 tak 1.0 tak
Właściwości prototypu
constructor 4.0 1.0 tak 1.0 tak
toString() 4.0 1.0 tak 1.0 tak
toLocaleString() 5.5 1.0 tak 1.0 tak
concat([item1 [, item2 [,...]]]) 4.0 1.0 tak 1.0 tak
join(separator) 4.0 1.0 tak 1.0 tak
pop() 5.5 1.0 tak 1.0 tak
push([item1 [, item2 [,...]]]) 5.5 1.0 tak 1.0 tak
reverse() 4.0 1.0 tak 1.0 tak
shift() 5.5 1.0 tak 1.0 tak
slice(start, end) 4.0 1.0 tak 1.0 tak
sort(comparefn) 4.0 1.0 tak 1.0 tak
splice(start, deleteCount [, item1 [, item2 [, ...]]]) 5.5 1.0 tak 1.0 tak
unshift([item1 [, item2 [, ...]]]) 5.5 1.0 tak 1.0 tak
indexOf(searchElement[, fromIndex]) 9.0 1.8 522 2.1 tak
lastIndexOf(searchElement[, fromIndex]) 1.8 522 2.1 tak
filter(callback[, thisObject]) 1.8 522 2.1 tak
forEach(callback[, thisObject]) 1.8 522 2.1 tak
every(callback[, thisObject]) 1.8 522 2.1 tak
map(callback[, thisObject]) 1.8 522 2.1 tak
some(callback[, thisObject]) 1.8 522 2.1 tak
reduce(callback[, initialValue]) 1.9 528 2.5.22 tak
reduceRight(callback[, initialValue]) 1.9 528 2.5.22 tak
Właściwości instancji
length 4.0 1.0 tak 1.0 tak

Obiekt typu String

Implementacja obiektów string
Obiekt typu String Trójząb Gekon WebKit Presto Migać
Nazywany funkcją
String([value]) tak tak tak tak tak
Nazywany konstruktorem
new String([value]) 3.0 1.0 tak 1.0 tak
Nieruchomości
prototype 4.0 1.0 tak 1.0 tak
fromCharCode([char0 [, char1 [, ...]]]) 4.0 1.0 tak 1.0 tak
Właściwości prototypu
constructor 4.0 1.0 tak 1.0 tak
toString() 3.0 1.0 tak 1.0 tak
valueOf() 3.0 1.0 tak 1.0 tak
charAt(pos) 3.0 1.0 tak 1.0 tak
charCodeAt(pos) 5.5 1.0 tak 1.0 tak
concat([string1 [, string2 [, ...]]]) 4.0 1.0 tak 1.0 tak
indexOf(searchString, position) 3.0 1.0 tak 1.0 tak
lastIndexOf(searchString, position) 3.0 1.0 tak 1.0 tak
localeCompare(that) 5.5 1.0 tak 1.0 tak
match(regexp) 4.0 1.0 tak 1.0 tak
replace(searchValue, replaceValue) 3.0 1.0 tak 1.0 tak
search(regexp) 4.0 1.0 tak 1.0 tak
slice(start, end) 4.0 1.0 tak 1.0 tak
split(separator, limit) 4.0 1.0 tak 1.0 tak
substring(start, end) 3.0 1.0 tak 1.0 tak
toLowerCase() 3.0 1.0 tak 1.0 tak
toLocaleLowerCase(comparefn) 3.0 1.0 tak 1.0 tak
toUpperCase() 3.0 1.0 tak 1.0 tak
toLocaleUpperCase() 3.0 1.0 tak 1.0 tak
Dodatkowe właściwości prototypu
substr(start, length) 4.0 1.0 tak 1.0 tak
Właściwości instancji
length 3.0 1.0 tak 1.0 tak

Obiekt boolowski

Implementacja obiektów boolowskich
Obiekt boolowski Trójząb Gekon WebKit Presto Migać
Nazywany funkcją
Boolean([value]) tak tak tak tak tak
Nazywany konstruktorem
new Boolean([value]) 3.0 tak tak tak tak
Nieruchomości
prototype 4.0 tak tak tak tak
Właściwości prototypu
constructor 4.0 tak tak tak tak
toString() 4.0 tak tak tak tak
valueOf() 4.0 tak tak tak tak

Numer obiektu

Realizacja obiektów liczbowych
Numer obiektu Trójząb Gekon WebKit Presto
Nazywany funkcją
Number([value]) ? tak tak ?
Nazywany konstruktorem
new Number([value]) 3.0 1.0 tak 1.0
Nieruchomości
prototype 4.0 1.0 tak 1.0
MAX_VALUE 4.0 1.0 tak 1.0
MIN_VALUE 4.0 1.0 tak 1.0
NaN 4.0 1.0 tak 1.0
NEGATIVE_INFINITY 4.0 1.0 tak 1.0
POSITIVE_INFINITY 4.0 1.0 tak 1.0
Właściwości prototypu
constructor 4.0 1.0 tak 1.0
toString([radix]) 4.0 1.0 tak 1.0
toLocaleString() 5.5 1.0 tak 1.0
valueOf() 4.0 1.0 tak 1.0
toFixed(fractionDigits) 5.5 1.0 tak 1.0
toExponential(fractionDigits) 5.5 1.0 tak 1.0
toPrecision(precision) 5.5 1.0 tak 1.0

Obiekt Math

Implementacja obiektów matematycznych
Obiekt Math Trójząb Gekon WebKit Presto
Właściwości wartości
E 3.0 1.0 tak 1.0
LN10 3.0 1.0 tak 1.0
LN2 3.0 1.0 tak 1.0
LOG2E 3.0 1.0 tak 1.0
LOG10E 3.0 1.0 tak 1.0
PI tak tak tak tak
SQRT1_2 3.0 1.0 tak 1.0
SQRT2 tak tak tak tak
Właściwości funkcji
abs(x) 3.0 1.0 tak 1.0
acos(x) 3.0 1.0 tak 1.0
asin(x) 3.0 1.0 tak 1.0
atan(x) 3.0 1.0 tak 1.0
atan2(y, x) 3.0 1.0 tak 1.0
ceil(x) 3.0 1.0 tak 1.0
cos(x) 3.0 1.0 tak 1.0
exp(x) 3.0 1.0 tak 1.0
floor(x) 3.0 1.0 tak 1.0
log(x) 3.0 1.0 tak 1.0
max([value1 [, value2 [, ...]]]) 3.0 1.0 tak 1.0
min([value1 [, value2 [, ...]]]) 3.0 1.0 tak 1.0
pow(x, y) 3.0 1.0 tak 1.0
random() 3.0 1.0 tak 1.0
round(x) 3.0 1.0 tak 1.0
sin(x) 3.0 1.0 tak 1.0
sqrt(x) 3.0 1.0 tak 1.0
tan(x) 3.0 1.0 tak 1.0

Obiekt Date

Realizacja obiektów daty
Obiekt Date Trójząb Gekon WebKit Presto
Nazywany funkcją
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) ? ? ? ?
Nazywany konstruktorem
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 4.0 1.0 tak 1.0
new Date (value) 4.0 1.0 tak 1.0
new Date () 4.0 1.0 tak 1.0
Nieruchomości
prototype 4.0 1.0 tak 1.0
parse(string) 3.0 1.0 tak 1.0
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 3.0 1.0 tak 1.0
Właściwości prototypu
constructor 4.0 1.0 tak 1.0
toString() 4.0 1.0 tak 1.0
toDateString() 4.0 1.0 tak 1.0
toTimeString() 4.0 1.0 tak 1.0
toLocaleString() 4.0 1.0 tak 1.0
toLocaleDateString() 4.0 1.0 tak 1.0
toLocaleTimeString() 4.0 1.0 tak 1.0
valueOf() 4.0 1.0 tak 1.0
getTime() 3.0 1.0 tak 1.0
getFullYear() 4.0 1.0 tak 1.0
getMonth() 3.0 1.0 tak 1.0
getUTCMonth() 4.0 1.0 tak 1.0
getDate() 3.0 1.0 tak 1.0
getUTCDate() 4.0 1.0 tak 1.0
getDay() 3.0 1.0 tak 1.0
getUTCDay() 4.0 1.0 tak 1.0
getHours() 3.0 1.0 tak 1.0
getUTCHours() 4.0 1.0 tak 1.0
getMinutes() 3.0 1.0 tak 1.0
getUTCMinutes() 4.0 1.0 tak 1.0
getSeconds() 3.0 1.0 tak 1.0
getUTCSeconds() 4.0 1.0 tak 1.0
getMilliseconds() 4.0 1.0 tak 1.0
getUTCMilliseconds() 4.0 1.0 tak 1.0
getTimezoneOffset() 4.0 1.0 tak 1.0
setTime(time) 3.0 1.0 tak 1.0
setMilliseconds(ms) 4.0 1.0 tak 1.0
setUTCMilliseconds(ms) 4.0 1.0 tak 1.0
setSeconds(sec [, ms]) 3.0 1.0 tak 1.0
setUTCSeconds(sec [, ms]) 4.0 1.0 tak 1.0
setMinutes(min [, sec [, ms]]) 3.0 1.0 tak 1.0
setUTCMinutes(min [, sec [, ms]]) 4.0 1.0 tak 1.0
setHours(hour [, min [, sec [, ms]]]) 4.0 1.0 tak 1.0
setUTCHours(hour [, min [, sec [, ms]]]) 4.0 1.0 tak 1.0
setDate(date) 4.0 1.0 tak 1.0
setUTCDate(date) 4.0 1.0 tak 1.0
setMonth(month [, date]) 3.0 1.0 tak 1.0
setUTCMonth(month [, date]) 4.0 1.0 tak 1.0
setFullYear(year [, month [, date]]) 4.0 1.0 tak 1.0
setUTCFullYear(year [, month [, date]]) 4.0 1.0 tak 1.0
toUTCString() 4.0 1.0 tak 1.0
Dodatkowe właściwości prototypu
getYear() 3.0 1.0 tak 1.0
setYear(year) 3.0 1.0 tak 1.0
toGMTString() 4.0 1.0 tak 1.0

Obiekt RegExp

Implementacja obiektów RegExp
Obiekt RegExp Trójząb Gekon WebKit Presto
Nazywany funkcją
RegExp (pattern, flags) ? ? ? ?
Nazywany konstruktorem
new RegExp (pattern, flags) 4.0 1.0 tak 1.0
Nieruchomości
prototype 4.0 1.0 tak 1.0
Właściwości prototypu
constructor 4.0 1.0 tak 1.0
exec(string) 4.0 1.0 tak 1.0
test(string) 4.0 1.0 tak 1.0
toString() 4.0 1.0 tak 1.0
Właściwości instancji
source 4.0 1.0 tak 1.0
global 4.0 1.0 tak 1.0
ignoreCase 5.5 1.0 tak 1.0
multiline 5.5 1.0 tak 1.0
lastIndex 4.0 1.0 tak 1.0

Obiekt błędu

Implementacja obiektów błędów
Obiekt błędu Trójząb Gekon WebKit Presto
Nazywany funkcją
Error (message) ? ? ? ?
Nazywany konstruktorem
new Error (message) 5.0 1.0 tak 1.0
Nieruchomości
prototype 5.0 1.0 tak 1.0
Właściwości prototypu
constructor 5.0 1.0 tak 1.0
name 5.5 1.0 tak 1.0
message 5.5 1.0 tak 1.0
toString() 5.0 1.0 tak 1.0

Obiekty NativeError

Implementacja obiektów NativeError
Obiekt NativeError Trójząb Gekon WebKit Presto
Nazywany funkcją
EvalError (message) ? 1.0 tak ?
RangeError (message) ? 1.0 tak ?
ReferenceError (message) ? 1.0 tak ?
SyntaxError (message) ? 1.0 tak ?
TypeError (message) ? 1.0 tak ?
URIError (message) ? 1.0 tak ?
Nazywany konstruktorem
new EvalError (message) ? 1.0 tak ?
new RangeError (message) ? 1.0 tak ?
new ReferenceError (message) ? 1.0 tak ?
new SyntaxError (message) ? 1.0 tak ?
new TypeError (message) ? 1.0 tak ?
new URIError (message) ? 1.0 tak ?
Nieruchomości
prototype ? 1.0 ? ?
Właściwości prototypu
constructor ? 1.0 ? ?
name ? 1.0 tak ?
message ? 1.0 tak ?

Bibliografia

Dalsza lektura

Linki zewnętrzne

  • Webdevout - dotyczy głównie przeglądarek Windows. Obszerne testowanie błędów.