Более точный способ - просто передать this в качестве аргумента функции, вызываемой во время ожидания:
function delayRemove(obj) {
setTimeout(function(_this) {
_this.feedbackTag.removeChild(obj);
}, 5000, this);
}
Вы также должны передать obj в качестве аргумента, просто чтобы убедиться, что он находится в области видимости (количество параметров не ограничено):
function delayRemove(obj) {
setTimeout(function(_this, removeObj) {
_this.feedbackTag.removeChild(removeObj);
}, 5000, this, obj);
}
HTML5 и Node.js расширили функцию setTimeout
, чтобы принимать параметры, которые передаются вашей функции обратного вызова. Он имеет следующую сигнатуру метода.
setTimeout(callback, delay, [param1, param2, ...])
Поскольку setTimeout
на самом деле не является функцией JavaScript ваши результаты могут отличаться в разных браузерах. Я не смог найти какие-либо конкретные детали поддержки, однако, как я уже сказал, это в спецификации HTML5.