Кода -копия выглядит следующим образом:
Функция foo ()
{
}
setInterval ("foo ()", 1000);
Если вы используете технологию OO, вы можете это сделать.
Кода -копия выглядит следующим образом:
// конструктор
функционировать myobj
{
Функция foo ()
{
оповещение (this.data);
}
this.timer = foo;
this.data = "hello";
setInterval ("this.timer ()", 1000);
}
функционировать другое ()
{
// Создать таймер при создании объекта
var obj = new myobj ();
}
Тем не менее, это не работает, как вы думаете. Причина в том, что функция setInterval () не распознает эту переменную. Торговой метод может сделать это.
Кода -копия выглядит следующим образом:
функционировать другое ()
{
var obj = nw myobj ();
setInterval ("obj.timer ()", 1000);
}
Очевидно, это работает правильно, но если вы перфекционист, вы не будете довольны этим. К счастью, это действие может быть помещено в конструктор, с небольшим изменением в форме.
Кода -копия выглядит следующим образом:
// конструктор
функционировать myobj
{
Функция foo ()
{
оповещение (this.data);
}
this.timer = foo;
this.data = "hello";
var self = это;
setInterval (function () {self.timer ();}, 1000);
}
функционировать другое ()
{
var obj = new myobj ();
}
Хорошо, используя закрытие, все в порядке. Что касается причин, я хочу задуматься за себя.
Наконец, приведите пример различных тестовых случаев.
Кода -копия выглядит следующим образом:
<html>
<голова>
<название>
Привет таймер
</title>
<script language = "jscript">
/*
* Есть 3 класса.
*
* 1. Таймер может работать и результат в порядке
* 2. Таймер может работать, и результат неверно
* 3. Таймер не может работать
*
*/
Функция obj ()
{
Функция foo ()
{
оповещение (this.timer);
}
this.timer = foo;
//
var me = это;
var f = function () {me.timer (); };
var f2 = function () {this.timer (); };
// 1 -й класс
// setInterval (f, 1000);
// 3 -й класс
// setInterval (F2, 1000);
// 2 -й класс
// setInterval (me.timer, 1000);
// setInterval (this.timer, 1000);
// setInterval (foo, 1000);
// 3 -й класс
// setInterval ("this.timer ()", 1000);
// setInterval ("me.timer ()", 1000);
// setInterval ("foo ()", 1000);
}
var o = null;
Функция onclick ()
{
o = new obj ();
// 1 -й класс
// setInterval ("o.timer ()", 1000);
setInterval (function () {o.timer ();}, 1000);
// 2 -й класс
// setInterval (o.timer, 1000);
}
</script>
</head>
<тело>
<input type = "button" onclick = "onclick ()" value = "click me"> </input>
</body>
</html>