关于js中定时器里面的作用域问题

这篇文章主要介绍了关于js中定时器里面的作用域问题,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

  1. /*  各种运动*/function Animation(){};Animation.prototype={    /*     匀速运动   */     linear:function(obj,target){        obj.timer=null;              clearInterval(obj.timer);                 var step=obj.offsetLeft

     关于js中定时器里面的作用域问题

    我当时就想咋回事呢  明明函数是定义在Animation里面的  方法也是由它调用的  所以this应该指向的是Animation

    于是乎我就继续往下看  看打了

    关于js中定时器里面的作用域问题

    奥,明白了  setTimeout setInterval  

     一般都是这么写

      timer=setTimeout(function(){},1000/60);

     形成了闭包  闭包里面的普通函数  作用域是window

    所以在window下执行fn  那么this 就是window

    linear是定义在Animation里面的  所以找不到函数  报错

    如果把fn函数的作用域绑定在Animation 就没关系了

    var fn=arguments.callee.bind(this);当调用loop的时候  this指的就是Animation 如果没明白  我再举一个简单的例子var obj={  age:"17;}setInterval(function(){     console.log(this.age);}.bind(obj),1000);
  2. 登录后复制

  3. 以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网! 

  4.  相关推荐:

  5. 对于JavaScript中DOM对象的分析

  6. 如何解决angular分页插件tm.pagination二次触发的问题

  7. 以上就是关于js中定时器里面的作用域问题的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    如何用jquery实现六十秒倒计时

    2025-3-8 3:52:50

    编程技术

    对js中宿主对象的解析

    2025-3-8 3:52:57

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索