выполните метод для существующего объекта с помощью window.setInterval

StackOverflow https://stackoverflow.com/questions/3044478

  •  27-09-2019
  •  | 
  •  

Вопрос

Возможно ли запустить метод для существующего объекта по истечении времени ожидания метода window.setInterval.Я могу эмулировать то же самое, имея некоторую глобальную переменную и вызывая метод этой глобальной переменной в setInterval, но я хотел знать, возможно ли это с помощью метода напрямую.

С наилучшими пожеланиями, Кешав

Это было полезно?

Решение

Да, вы можете это сделать.Вам нужна вспомогательная функция, чтобы создать новое функция, к которой "привязан" ваш существующий объект:

var someRandomObject = {
  someMethod: function() {
    // ... whatever
  },
  // ...
};

// this is a "toy" version of "bind"
function bind(object, method) {
  return function() {
    method.call(object);
  };
}

var interval = setInterval(bind(someRandomObject, someRandomObject.someMethod), 1000);

Теперь, когда интервальный таймер вызывает ваш метод ("someMethod"), указатель "this" будет ссылаться на объект.

Эта версия "привязки" упрощена.Библиотеки, такие как Prototype, Functional, jQuery и т.д., Как правило, предоставляют более надежные версии.Кроме того, функция "bind" когда—нибудь станет встроенной частью Javascript - она уже есть в некоторых браузерах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top