javascript中setTimeout的问题解决方法
name = 'out of you'
foo = function(){
this.name = 'xxoo';
}
foo.prototype.say = function(){
console.log(this.name);
}
f = new foo();
f.say(); // 这句会输出xxoo
setTimeout(f.say, 500); // 这句会输出out of you
这是个坑,javascript的this是在调用的时候产生的,还跟上下文有关。这么解决呢。我测试了一下,用了call。
代码如下:
setTimeout.call(foo(), f.say, 500)
网上的一些解决方法
js中setTimeout的this指向问题
JavaScript中使用Timer
最后其实还是对this得理解问题。
哪天搞得明白点了再继续写
相关推荐
-
javascript setTimeout和setInterval计时的区别详解
setTimeout方法是定时程序,也就是在什么时间以后干什么.干完了就拉倒.setInterval方法则是表示间隔一定时间反复执行某操作.如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行.如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法:例如:(1): 复制代码 代码如下: t=setTimeout('northsnow()',1000);clearTimeout(t);(2):t=setInterval('northsnow()',
-
Javascript的setTimeout()使用闭包特性时需要注意的问题
setTimeout经常被用于延迟执行某个函数,用法为: 复制代码 代码如下: setTimeout(function(){ - }, timeout); 有时为了进行异步处理,而使用setTimeout(function-,0):比如: 复制代码 代码如下: function f(){ - // get ready setTimeout(function(){ -. // do something }, 0); return -; } 在setTimeout设定的函数处理器之前,函数f返回
-
Javascript对象中关于setTimeout和setInterval的this介绍
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 复制代码 代码如下: function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn, 1000);//直接使用this引用当前对象 } } var o = new obj(); o.fn(); 然后
-
JavaScript基于setTimeout实现计数的方法
本文实例讲述了JavaScript基于setTimeout实现计数的方法.分享给大家供大家参考.具体实现方法如下: var count = 0; var timer; var timerOn = false; function timedCount() { count++; timer = setTimeout(function(){ timedCount() }, 1000); } function doTimer() { if (!timerOn) { timerOn = true; tim
-
JavaScript使用setTimeout实现延迟弹出警告框的方法
本文实例讲述了JavaScript使用setTimeout实现延迟弹出警告框的方法.分享给大家供大家参考.具体如下: 下面的代码执行后点击按钮会延迟3秒钟弹出一个警告框,主要演示了setTimeout的使用方法 <!DOCTYPE html> <html> <body> <p> Click the button to wait 3 seconds, then alert "Hello". </p> <button onc
-
JavaScript实现向setTimeout执行代码传递参数的方法
本文实例讲述了JavaScript实现向setTimeout执行代码传递参数的方法.分享给大家供大家参考.具体分析如下: setTimeout函数是javascript中实现动态效果最关键的函数.但昨天在写代码的时候发现当第一个参数是函数调用的时候,不能向被调函数传递参数.这真是个非常严重的问题,我排查了好久才发现问题,浪费了N多时间啊.. 后来上网查了查,这其实是IE的一个BUG.解决方法有很多,其中我觉得最牛的一种就是重写setTimeout函数...这个太麻烦了..这里推荐一种十分简单的方
-
JavaScript通过setTimeout实时显示当前时间的方法
本文实例讲述了JavaScript通过setTimeout实时显示当前时间的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml
-
JavaScript SetInterval与setTimeout使用方法详解
setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码.区别:window.setTimeout("function",time)://设置一个超时对象,只执行一次,无周期 window.setInterva
-
javascript中setTimeout的问题解决方法
看到一个问题,大概是这个样子得. 复制代码 代码如下: name = 'out of you' foo = function(){ this.name = 'xxoo'; } foo.prototype.say = function(){ console.log(this.name); } f = new foo(); f.say(); // 这句会输出xxoo setTimeout(f.say, 500); // 这句会输出out of you 这是个坑,javascript的this是在调用
-
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
解决AJAX中文乱码常用的两种方法 1. 在客户端进行encodeURI(utf-8也可以不做,默认),在服务器端将iso-8859-1编码转为utf-8编码 2.在客户端进行两次encodeURI,在服务器端进行一次转换. 第2种方法能解决问题的原因: 进行两次转换后,在第一次getparameter方法中进行第一次解码,因为解出来的是英文(第一次encode之后的结果),所以不会出问题:第二次使用URLDecoder的decode方法,所以能正常解决这个问题.需要注意的是,在decode方法
-
javascript中setTimeout使用指南
javascript中setTimeout使用指南 <script> /* //方法1 function slows(){ alert("15S后弹出!"); } setTimeout("slows()",5000); //方法2 function slows(){ alert("15S后弹出!"); } setTimeout(slows,5000); */ //方法3 function slows(){ alert("15
-
JavaScript中setTimeout()的具体用法
setTimeout( ) 是属于 window 的 方法, 但我们都是略去 window 这顶层容器名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method 请先看以下一个简单, 这是没有实际用途的例子, 只是用来示范 setTimeout( ) 的语法. 1.setTimeout( ) 语法例子 <html> <body text=red> <h1> <font color=blue> 示范网页 </font> </
-
JavaScript中Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下: 15.2.
-
JavaScript中递归实现的方法及其区别
递归函数:递归函数是在通过名字调用自身的情况下构成的. 递归实现阶乘函数: 方法一:通过使用函数的名字 function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } } console.log(factorial(4)); 结果为:24: 但是这种方法实现递归有一个问题,观察以下代码: function factorial(num){ if(num<=1){ return 1; }els
-
实例详解JavaScript中setTimeout函数的执行顺序
前言 setTimeout,前端工程师必定会打交道的一个函数.它看上去非常的简单,朴实,有着一个很不平凡的名字--定时器.其实网上关于JavaScript中setTimeout的文章很多,但总感觉例子不够直接具体,因此写了个简单的例子并加以解释希望能让大家明白setTimeout是如何执行的.下面话不多说了,来一起看看详细的介绍: 实例代码如下: var time1=new Date().getTime(); console.log(1,time1); setTimeout(function()
-
关于JavaScript中事件绑定的方法总结
最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX="" 来绑定.举个例子: <input type="button" value="点我呦" onclick="aler
-
JavaScript汉诺塔问题解决方法
本文实例讲述了JavaScript汉诺塔问题解决方法.分享给大家供大家参考.具体实现方法如下: <script language="javascript"> var han=function (disc,src,aux,dst){ if(disc>0){ han(disc-1,src,dst,aux); document.writeln("move disc "+disc+" from "+src+" to "
-
JavaScript中setter和getter方法介绍
javascript中的setter.getter是平时接触比较少的方法,其本身也并不是标准方法,只在非ie浏览器里支持(ie内核也许有其他方法可以做到呢?暂时不知其解),但是加以利用可以做许多事情,比如: 1.对数据的访问限制: a.value是对value变量的getter方法调用,如果在getter方法实现中抛出异常,可以阻止对value变量的访问 2.对dom变量进行监听: window.name是一个跨域非常好用的dom属性(大名鼎鼎,详见百度),如果覆盖window.name的set
随机推荐
- 分享下程序员/设计师能用上的 75 份速查表
- 按键精灵应用手记
- MySQL中实现高性能高并发计数器方案(例如文章点击数)
- Mysql数据表分区技术PARTITION浅析
- Vue2路由动画效果的实现代码
- 用vbs检查注册表项的访问权限的代码
- Java接口和抽象类的区别深入剖析
- 详解ASP.NET Core应用中如何记录和查看日志
- js实现滑动到页面底部自动加载更多功能
- JavaScript获得表单target属性的方法
- ASP编码和解码函数详解
- Ajax传递中文参数到后台乱码的有效解决方法
- iframe里面的元素触发父窗口元素事件的jquery代码
- Windows 2003系统四则优化小技巧
- java解析excel文件的方法
- Spring学习之依赖注入的方法(三种)
- WordPress用户登录框密码的隐藏与部分显示技巧
- PHP缓存集成库phpFastCache用法
- TF-IDF算法解析与Python实现方法详解
- python使用logging模块发送邮件代码示例