这篇文章主要介绍了关于js中定时器里面的作用域问题,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
/*
各种运动
*/
function Animation(){};
Animation.prototype={ /* 匀速运动 */
linear:function(obj,target){
obj.timer=null;
clearInterval(obj.timer);
var step=obj.offsetLeft ![1531557197979255.png 1368647-20180714151151337-1876865526[1].png](https://img.php.cn//upload/image/503/624/509/1531557197979255.png)
我当时就想咋回事呢 明明函数是定义在Animation里面的 方法也是由它调用的 所以this应该指向的是Animation呀
于是乎我就继续往下看 看打了

奥,明白了 setTimeout 和 setInterval
一般都是这么写
timer=setTimeout(function(){},1000/60);
形成了闭包 闭包里面的普通函数 作用域是window
所以在window下执行fn 那么this 就是window
网络工作室源码1.0
网络工作室源码基于热腾CMS(RTCMS)定制,栏目全站自动调用,可设置生成为html静态文件。网站分类适合网络公司和工作室使用。程序中带有演示数据,如果全新安装,可将根目录下的/uploads 文件夹中的演示图片文件删掉。安装方式:上传upload_install中的文件上传到虚拟主机或服务器网站根目录下;访问 http://域名/ 即可安装,安装时可以选取“演示数据&
下载
而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);以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:









