javascript указатель на объект

html JavaScript jQuery

Ребят, подскажите как сделать корректно. Есть класс на js, в котором есть метод, который надо периодически вызывать

var timer = new Class({
per: function(secs) {
setTimeout("per(" + (secs-1) + ")", 1000);
}
});

Это вариант для случая, если per() это обычная функция. Мне же нужно, чтобы по таймеру вызывался метод, причём не класса, а уже созданного объекта.

Как это сделать ?

Примечание:
adav84:

внутри класса я не могу указать конкретный объект, так как я знаю только ссылку на него (this). В контексте, который будет присутствовать при вызове события истечения времении этого this не будет....

Примечание:
2 Артём Шегеда

Да, предложенный Вами вариант работает. Спасибо, я считаю, что это бесценная инфа) Решения, предлагаемые в интернетах - бред по сравнению с этим.
Ответы:
не совсем понятно, что требуется (в JS нет, как таковых, классов и все объекты всегда являются "созданными"), но гляньте в сторону call. напр. obj.f.call(obj2, 123); вызывает obj.f с параметром 123 в контексте obj2 (т.е. this внутри f будет указывать на obj2)
var object = {
method:function(param){alert(param)}
};
//ну или var object=this;
var timer = new Class({
  per: function(secs) {
     setTimeout(function(){object.method(secs-1)} , 1000);
  }
});
Так?
дело в том, что методы классов - это не методы, это обычные функции, которым при вызове устанавливается контекст (this). понимание JS очень усложнено после изучения Java, C# или С++. однако, это нужно принять как есть.
чтобы при вызове метода был установлен контекст, нужно создать "замыкание", в котором переопределить контекст:


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.