【发布时间】:2023-04-03 00:42:02
【问题描述】:
我想知道是否有人可以给我一个简单的解决方案。
我想让两个狗实例重复吠叫 + 摇尾组合。
如果所有逻辑都包含在 barkNameAndTime 函数中,我很好,但是通过 setTimout 调用 wagTail 我会丢失上下文。我写的 JS 不多,所以我的闭包知识有点生锈,我似乎无法找到一个干净的解决方案。
问题是,Baloo 最终会吠叫和摇尾巴,而 Lola 迷失在人群中 :)
谢谢 沃里克
<script type="text/javascript">
$(document).ready(function () {
var zDog1 = new dog("Lola");
var zDog2 = new dog("Baloo");
zDog1.bark();
zDog2.bark();
});
function dog(aName) {
var name = aName,
barkNameAndTime = function () {
var time = new Date().getTime();
$('#MyDiv').html($('#MyDiv').html() + "<br />" + name + " barked @ " + time);
setTimeout(wagTail, 1000);
};
wagTail = function () {
var time = new Date().getTime();
$('#MyDiv').html($('#MyDiv').html() + "<br />" + name + " wagged tail @ " + time);
setTimeout(barkNameAndTime, 1000);
}
return {
bark: barkNameAndTime
};
}
【问题讨论】:
标签: javascript closures