Мне интересно, как я могу привязать переменные к функции закрытия. Позвольте мне использовать этот код:Переменные связывания закрытия в Javascript
Пожалуйста, смотрите код здесь:
function makeCall(callback) {
var fs = callback.toString();
var stored_callback = eval('(' + fs + ')').bind({ });
stored_callback();
}
function foo(id) {
makeCall(function() {
console.log(id);
});
}
foo('bar');
После вызова Eval, вызываемая функция не может достичь идентификатора, как это должно как закрытие.
Вопрос в том, что перед вызовом toString можно каким-то образом получить «контекст» замыкания, которое нужно сохранить и извлечь и связать с вызовом?
Я не совсем уверен, понимаю ли я. 'id' и' name' доступны функцией, которую вы передаете 'obj.do', так как она является закрытием, независимо от того, что означает 'this'. Что такое' callback' в 'callback.bind (bobInstance);'? Возможно, вам нужно предоставить лучший пример. –
Вы правы, извините. Надеюсь, что это больше понятно. – user1018074
Хорошо, я могу понять, что вы сейчас пытаетесь сказать, но я не вижу проблемы. См. здесь: http://jsfiddle.net/xRLNM/. Я связываю переданный в обратном вызове, но он все еще может получить доступ 'id'. Вы хотите« изменить »t значения 'id' и' name', когда вы привязываете обратный вызов к другому объекту? Возможно, вам придется предоставить демонстрацию http://jsfiddle.net/, чтобы показать актуальную проблему. –