Я создаю API для не-программистов для написания стороннего кода для виртуальной многопользовательской арены битвы. Синтаксис для использования глобалам было бы неплохо:Предоставление сторонним JavaScript доступа к глобальным переменным
function Step() {
if (sensor.wall) {
movement.brake();
movement.turnLeft();
}
if (sensor.enemy) {
movement.shoot()
}
if (movement.speed < 1) {
movement.accelerate(.1);
}
}
Globals в приведенном выше примере будет sensor
и movement
. Писателю-сценаристу не важно, откуда они, просто они доступны. (Нет, это не окончательный синтаксис. Просто прототипирование здесь.)
Скрипты будут выполняться как на клиенте (в браузере), так и на сервере (через Node или Spidermonkey).
Итак, как это сделать? Похоже, что мои варианты: (?, Но это плохо, верно)
- Установите все Глобал лексический затем
eval()
сценарий - Установите все глобал в глобальном масштабе, а затем запустить скрипт нормально (но как насчет DOM глобалы, как
window
?)
Я мог бы обеспечить глобальный охват с помощью Google Caja. Мне также хотелось бы, чтобы это было исполнено, поскольку на одном и том же сервере будет выполняться множество функций Step()
.
В вашем примере не совсем ясно, что должно быть «глобальным», а что нет. Также неясно, в каком контексте этот код должен запускаться на сервере? клиент? и то и другое? – Pointy
Обновлено. Спасибо за указатели. –