Проблемы с выполнением setTimeout для функции - передача этого параметра - PullRequest
2 голосов
/ 22 августа 2010

Привет, ребята. У меня есть функция, которая принимает this в качестве параметра - 'this', ссылаясь на элемент dom, который при нажатии должен запустить функцию.Дело в том, что я хочу, чтобы эта функция вызывалась после небольшой задержки, однако передача переменной term this не работает, так как когда функция выполняется 'this', то не ссылается на переданный объект впараметр, но для объекта окна.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

PrototypeJS добавляет метод bind () к Function.prototype .Этот метод позволяет привязать функцию и аргументы к контексту конкретного объекта.Проще говоря,

window.setTimeout((function() {
    alert(this);
}).bind(this), 2000);

Самое приятное то, что этот метод теперь является частью спецификации ECMA-262, на которой основан JavaScript, и собственные реализации внедряются в современные браузеры.PrototypeJS добавит этот метод, только если он еще не реализован.

Я настроил пример сценария на http://jsfiddle.net/rLpbx/.

2 голосов
/ 22 августа 2010

Вы можете захватить this:

var t = this;
window.setTimeout(function() {
    // use the t variable here
}, 2000);
...