由setTimeout()里的this引出的this】的更多相关文章

example 1: window.id='windowid'; function M(){ this.id='Mid'; this.f1=function(){console.log(this.id);}; this.f2=function(){ setTimeout(this.f1,5000); }; } var m=new M(); m.f2(); //'windowid' example 2: window.id='windowid'; function M(){ this.id='Mi…
先看一段代码 setTimeout(function () { console.log('abc') }, 1000) for (var i = 0; i <= 800000000; i++) { if (i == 800000000) { console.log(i) } } 若只执行下面的for循环,在i5-4200u CPU下,大约3.4秒会输出800000000.当在上方加入setTimeout时,发现大约3.4秒钟输出800000000后接着立刻输出abc.把setTimeout里的1…
js高程 第三版 p203 重点:超时调用的代码都是在全局作用域中执行的,因此函数中this 的值在非严格模 式下指向window 对象,在严格模式下是undefined. 不过这里仅仅解释前半句: 超时调用的代码都是在全局作用域中执行的 看题,在控制台输出下代码: var site = "global"; function foo() { var site = "partial"; setTimeout('alert(site);', 100); } foo();…
回到目录 Lind.DDD.Utils.HttpHelper组件主要实现了对HTTP的各种操作,如Get,Post,Put和Delete,它属于最纯粹的操作,大叔把它封装的目的主要为了实现与API安全授权的统一,你不可能为每个请求都写一个“逻辑完全一样的加密规则”,这是违背DRY原则的,我们应该通过面向对象的各位原则,将这种可变的部分封装! 公开的统一方法…
问题的由来是下面这段代码: middleOnmouseLeave: function (event) { setTimeout(function () { event.currentTarget.style.height = '' event.currentTarget.style.border = '' }, ) }, 报错如下: 打断点发现currentTarge是null 有点奇怪,放在setTimeout外面就是好的,后来想了想 应该是setTimeout是异步的, 其他正常的代码都先执…
一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们在编程过程中的setTimeout(类似的还有setInterval.Ajax),不是异步执行的吗?!! 例如: <!DOCTYPE html> <head> <title>setTimeout</title> <meta http-equiv="…
精准问题 setTimeout的问题在于它并不是精准的,例如使用setTimeout设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms的cpu时间片,再次轮到定时器执行时,时间已经过期了4ms,那么是不是说setInterval就是准确的呢? 然而并不是,setInterval存在两个问题: 时间间隔可能会跳过 时间间隔可能小于定时器设定的时间 请看以下代码: function click() { // code block1... setInterval(function()…
john resig写的一篇文章: 原文地址:http://ejohn.org/blog/how-javascript-timers-work/ 作为入门者来说,了解JavaScript中timer的工作方式是很重要的.通常它们的表现行为并不是那么地直观,而这是因为它们都处在一个单一线程中.让我们先来看一看三个用来创建以及操作timer的函数. var id = setTimeout(fn, delay); - 初始化一个单一的timer,这个timer将会在一定延时后去调用指定的函数.这个函数…
老实说,写这篇文章的时候心里是有点压抑的,因为受到打击了,为什么?就 因为喜欢折腾不小心看到了这个"简单"的函数:        for (var i = 0; i < 5; i++) {             setTimeout(function () {                 console.log(i)             }, i * 1000);         }         console.log(i); 什么?这不就是我很久之前看到的先打印一…
for(var i=0;i<=3;i++){ setTimeout(function() {  console.log(i)  }, 10);} 答案:打印4次4 这道题涉及了异步.作用域.闭包 settimeout是异步执行,10ms后往任务队列里面添加一个任务,只有主线上的全部执行完,才会执行任务队列里的任务,当主线执行完成后,i是4,所以此时再去执行任务队列里的任务时,i全部是4了.对于打印4次是:  每一次for循环的时候,settimeout都执行一次,但是里面的函数没有被执行,而是被…