2016-11-06 5 views
1

Я знаю, что V8 включает только подмножество глобальных объектов JavaScript, которые мы обычно используем в браузерах, поэтому глобальные объекты, такие как console/window/document, недоступны в d8.exe. Такие функции, как setTimeout, также недоступны (на самом деле я не могу найти способ заменить эту функцию).Глобальные объекты Javascript, включенные в d8.exe

Я могу сделать что-то вроде if ("console" in this) { ... }, чтобы проверить, доступен ли объект console или нет, но это не очень изящно, на мой взгляд. Есть ли список, в котором указано, что включено, а что нет? Или еще лучше, список обходных решений?

+0

Слово «синтаксис» не подходит. О чем вы спрашиваете, это глобальная среда JavaScript. Тем не менее, ответ да, вы можете просто проверить, определены ли такие вещи, как 'document' и' window'. – Pointy

+0

Ну, глобальные символы и API-интерфейсы веб-браузеров и Node.js и другие среды выполнения JavaScript обычно документируются, если это то, что вы имеете в виду. Однако самый надежный способ адаптации вашего кода - это определенно для того, чтобы сделать эти явные неэлегантные тесты. Стандарты и спецификации меняются со временем. – Pointy

ответ

1

V8 и, следовательно, d8, реализует все библиотеки, определенные в спецификации языка EcmaScript (Ecma 262) и спецификации API интернационализации EcmaScript (Ecma 402). Кроме того, d8 реализует пару специальных функций ввода-вывода, которые в основном предназначены для набора тестов V8, и на них не следует полагаться.

+0

Прежде чем я прочитаю ваш ответ, я уже обнаружил большинство глобальных объектов, проверив 'src/d8.cc' (много полезных функций IO!) И запустил' strings d8.exe> ​​list.txt'. Спецификация, которую вы показали мне, заполняет оставшиеся пробелы. Благодаря! –