نسخة الكود كما يلي:
وظيفة 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 = this ؛
setInterval (function () {self.timer () ؛} ، 1000) ؛
}
وظيفة أخرى ()
{
var obj = new myobj () ؛
}
حسنًا ، باستخدام الإغلاق ، لا بأس. أما بالنسبة للأسباب ، أريد أن أفكر القراء لأنفسهم.
أخيرًا ، أعط مثالًا على حالات الاختبار المختلفة.
نسخة الكود كما يلي:
<html>
<head>
<title>
مرحبا مؤقت
</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 () ؛ } ؛
// الدرجة الأولى
// setInterval (f ، 1000) ؛
// الطبقة الثالثة
// setInterval (F2 ، 1000) ؛
// الفصل الثاني
// setInterval (me.timer ، 1000) ؛
// setInterval (this.timer ، 1000) ؛
// setInterval (Foo ، 1000) ؛
// الطبقة الثالثة
// setInterval ("this.timer ()" ، 1000) ؛
// setInterval ("me.timer ()" ، 1000) ؛
// setInterval ("foo ()" ، 1000) ؛
}
var o = null ؛
وظيفة onclick ()
{
o = new obj () ؛
// الدرجة الأولى
// setInterval ("O.Timer ()" ، 1000) ؛
setInterval (function () {o.timer () ؛} ، 1000) ؛
// الفصل الثاني
// setInterval (O.Timer ، 1000) ؛
}
</script>
</head>
<body>
<type type = "button" onClick = "onClick ()" value = "Click Me"> </pected>
</body>
</html>