#javascript #mozilla #spidermonkey
#javascript #mozilla #spidermonkey
Вопрос:
Я создал spidermonkey на Mac, следуя этому. В разделе build-release/dist/bin исполняемый файл — js24 вместо js (в соответствии с этим ).
Однако, когда я запускаю оболочку с использованием js24, выражения типа 1 2 работают, но когда я пытаюсь использовать такие вещи, как setTimeout(function () {}, 500) Я получаю,
ReferenceError: setTimeout is not defined
Что я делаю не так? Я думал, что поведение будет таким же, как у оболочки узла.
Комментарии:
1.
setTimeout
не является частью языка.2.
setTimeout
это функция объекта window , который является вашим глобальным в вашем браузере. Нетwindow
, нетsetTimeout
3. @MattBurland понял, спасибо. V8 тоже ведет себя таким образом, и узел добавляет это?
4. Первый результат для «spidermonkey settimeout»: gist.github.com/kevinoid/3146420
Ответ №1:
Сохранение отличных ответов из комментариев в качестве фактического ответа, чтобы этот вопрос можно было пометить как ответ.
setTimeout не является частью языка JavaScript, это часть объекта браузера window
, который является глобальным объектом для кода JavaScript веб-страницы: https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout
node.js имеет аналогичный API: http://nodejs.org/docs/latest/api/timers.html#timers_settimeout_callback_delay_arg
Для реализации setTimeout в SpiderMonkey вы можете использовать этот код: https://gist.github.com/kevinoid/3146420