`
muyu
  • 浏览: 222691 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

setTimeout 如何调用本身

阅读更多
MoviePlayer.prototype.moveDiv = function() {
 var curDiv = $('u' + this.groupName + '_' + this.current_id);
 if(curDiv.style.posLeft != 0) {
  curDiv.style.posLeft = curDiv.style.posLeft * 0.8;
  var self = this;
   window.setTimeout(function(){ self.moveDiv(); }, 30);
 } else {
  
 }
}

 

 

上述调用的时候,要注意两个地方:

 

  • 注意this引用的存储,如果在setTimeout里写this,那么系统会认为this指向setTimeout方法所属的window对象;
  • setTimeout里的参数的正确写法:window.setTimeout(function(){ self.moveDiv(); }, 30);而不是window.setTimeout(self.moveDiv, 30);

非常感谢js 中 setTimeout()的用法, 该文分析得比较详细。

 

分享到:
评论

相关推荐

    Javascript中, setTimeout() 和 setInterval() 的方法

    这也意味着,如果执行函数本身需要的时间超过设定的延迟,可能会出现函数调用的重叠。 考虑以下示例,每1秒钟应该打印一个数字,但由于函数执行时间过长,实际效果可能并非如此: ```javascript let i = 0; const ...

    关于JS中setTimeout()无法调用带参函数问题的解决方法.docx

    // 将被递归调用的函数本身,拼成字符串形式 var repeat = "moveing('" + id + "'," + target_x + "," + target_y + "," + t + ")"; // 使用setTimeout var movment = setTimeout(repeat, t); } ``` 这种方法...

    关于JS中setTimeout()无法调用带参函数问题的解决方法

    // 被递归调用的函数本身,拼成字符串形式,注意第一个参数的引号 var repeat = "moveing('" + id + "'," + target_x + "," + target_y + "," + t + ")"; var movment = setTimeout(repeat, t); } ``` 通过上述...

    让JavaScript中setTimeout支持链式操作的方法

    然而,由于setTimeout本身返回的定时器ID并不是一个promise对象,因此它并不支持链式调用。在一些情况下,开发者可能希望在setTimeout执行后执行一些后续操作,这时就需要使用一些技巧来实现链式操作。 在提供的...

    JavaScript通过setTimeout实时显示当前时间的方法

    之后,通过调用setTimeout函数,以1000毫秒(即1秒)为周期递归调用showtime函数本身,实现时间的实时更新。 具体来说,showtime函数执行以下步骤: 1. 创建一个新的Date对象,这将返回当前时间。 2. 使用Date对象...

    javascript setTimeout()传递函数参数(包括传递对象参数)

    一个常见的需求是在setTimeout()中调用函数并传递参数,但是在使用字符串作为回调函数调用时,直接传递参数的方式可能会导致“未定义”的错误。这是因为JavaScript引擎无法识别字符串中的变量。为了解决这个问题,...

    animate动画特效重复调用

    jQuery库本身提供了`'swing'`和`'linear'`两个内置的缓动函数,但也可以使用第三方插件如`jQuery.easing`来扩展更多的选项。 综上所述,`animate()`是jQuery中实现动态效果的重要手段,通过合理的重复调用,我们...

    setTimeout与setInterval在不同浏览器下的差异

    而在Mozilla系列(包括Firefox)中,`setTimeout` 函数可以接受额外的参数,这些参数会被传递给被调用的函数,这也是为什么Firefox表现不同的原因。 使用 `setTimeout` 时,通常推荐使用函数对象而非字符串,因为...

    javascript 支持链式调用的异步调用框架Async.Operation.docx

    随着ES6的发布及其后续版本的不断迭代,JavaScript语言本身以及社区围绕着异步处理提供了多种解决方案。本文档介绍了一种名为`Async.Operation`的自定义异步调用框架,它支持链式调用,旨在简化异步任务的管理和执行...

    javascript学习笔记(十五) js间歇调用和超时调用

    通常情况下,间歇调用setInterval可以被多个setTimeout调用替代。在一些特殊情况下,使用setTimeout来代替setInterval可以提供更好的控制。例如,可以在每次执行函数之后决定下一次是否执行,或者调整下一次的执行...

    浅谈JavaScript中setInterval和setTimeout的使用问题

    通过递归地调用setTimeout,我们可以控制任务的执行时间,确保前一个任务执行完毕后再安排下一个任务。这种方法的典型示例代码如下: ```javascript function do_sth() { console.log('Hello'); // 执行耗时操作....

    google 首页特效

    自己不容易看懂的,并且加了完整的注释 希望能够帮到大家。里面的js代码写的不错,看完了 完全弄明白了其中原理,例如闭包 settimeout调用对象本身之类的 估计也需要时间的积累,google首页特效 希望大家喜欢

    setTimeout在类中使用的问题!

    但是当 `thread_result` 被作为字符串传递给 `setTimeout` 时,`this` 的指向并不是 `Calendar` 实例本身,而是全局对象(在浏览器环境中为 `window`)。这会导致 `this` 指向错误,从而使得内部的方法无法正常工作...

    使用Promise链式调用解决多个异步回调的问题

    就像在快餐店点餐,我们支付后收到一张收据(Promise),这个收据代表着未来的汉堡,而不是汉堡本身。我们可以继续做其他事情,而当汉堡准备好时,我们可以用收据换取汉堡。如果汉堡售罄,那么Promise就会失败,就像...

    JS随机调用指定函数的方法

    然后,通过`setInterval`设置定时器,并在定时器到期时周期性地执行`toggleSomething`函数本身。如果需要停止定时器,可以使用`clearInterval`函数,并传入定时器的ID。 在代码中,我们使用`$("#box").toggleClass...

    vue mounted 调用两次的完美解决办法

    - **动态组件**:如果组件本身是动态加载的,每次切换时,`mounted` 都会被调用。 - **`v-if` 与 `v-show`**:`v-if` 会根据条件判断是否创建 DOM 元素,如果条件变化,`mounted` 可能会再次执行。相比之下,`v-...

    js代码-同步的 setTimeou 并有返回值

    在JavaScript中,`setTimeout`函数通常用于异步执行任务,它会在指定的毫秒数后调用提供的函数或表达式。然而,`setTimeout`本身是非阻塞的,并且不直接支持返回值。这意味着你不能立即获取到`setTimeout`执行的结果...

    JavaScript中日常收集常见的10种错误(推荐)

    1 对于this关键词的不正确使用 Game.prototype.restart = function () { ... this是指代当前对象本身,this的调用和它所在的环境密切相关。上面的错误是因为在调用setTimeout函数的时候,实际调用的是window.s

Global site tag (gtag.js) - Google Analytics