В настоящее время у меня есть версия простого средства просмотра JS, которая запускает / тестирует основные функции в браузере, но пытается создать более функциональную версию без сохранения состояния.Вот соответствующий код:
"" "
var viewer = {
...
listen: function (callback) {
'use strict';
var bound_callback = callback.bind(null, function () {return document.getElementById('input').value});
document.getElementById('viewer').removeEventListener('submit', last_callback);
document.getElementById('viewer').addEventListener('submit', bound_callback, false);
last_callback = bound_callback;
}
};
var last_callback;
" ""
По сути, другой метод объекта "" "viewer
" "" захватываетввод от пользователя и передает его данной функции, затем функция вызовет "" "listen
" "" (в форме "" "viewer.listen([function])
" "") и передаст новый ввод (позднее) к вновь выбранной функции.Но, похоже, это не работает с любым подходом, который я пробовал (с моей лучшей попыткой выше).Вместо передачи функции она передает текст * * функции (буквально "function () {ret ...").Я могу вызвать анонимную функцию, связанную с метко названным "" "bound_callback" "", но она будет захватывать входные данные сразу после установки прослушивателя событий, а не при запуске, например, создавая простую программу "эхо" (котораявсегда пропускается круговая "" "viewer.listen(echo)
" "", конечно), всегда повторяет * последний * вход, а не текущий.Но что мне нужно сделать, чтобы обратный вызов извлек пользовательский ввод *, когда он вызывает *, и передал его в качестве аргумента ранее выбранной функции обратного вызова?