camka
не самка
Установка метода в setTimeout()
Начал разбирать ОО в яваскрипт и наткнулся на такую проблему. Хочу устанавливать свои таймауты для каждого из создаваемых объектов. Казалось бы, что может быть легче, передаешь в window.setTimeout соответствующий метод объекта и ждешь, когда он вызовется. Но не тут то было. Если в вызываемом методе имеется вызов некоего другого метода того же объекта, то он не находится, и выдается сообщение:
Пробовал передавать функцию как строку - setTimeout("this.function()", delay) он ее даже вызвать не сумел.
Видимо, проблема заключается в том, что в области видимости переменных на момент вызова функиции, переданной в setTimeout, объект this не определен.
Как побороть сию проблему?
Начал разбирать ОО в яваскрипт и наткнулся на такую проблему. Хочу устанавливать свои таймауты для каждого из создаваемых объектов. Казалось бы, что может быть легче, передаешь в window.setTimeout соответствующий метод объекта и ждешь, когда он вызовется. Но не тут то было. Если в вызываемом методе имеется вызов некоего другого метода того же объекта, то он не находится, и выдается сообщение:
Код:
Error: this.killtimer is not a function
Source File: [url]http://localhost/test/jsclass.html[/url]
Line: 25
PHP:
<html>
<head>
<title>JS class</title>
</head>
<body>
<script>
function myclass()
{
var timer = null;
this.setTime = function ()
{
timer = window.setTimeout(afterTimeout, 1000);
}
this.killtimer = function ()
{
alert('this.killtimer');
window.clearTimeout(timer);
}
var afterTimeout = function()
{
this.killtimer();
}
}
var obj = new myclass();
obj.setTime();
</script>
</body>
</html>
Как побороть сию проблему?