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

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

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

1 Ответ

2 голосов
/ 15 июня 2010

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

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»),этот «указатель будет ссылаться на объект».

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

...