禹城新闻网(setTimeout 和 setInterval 中 this 指向)
用户投稿
•
•
阅读 139
禹城新闻网:今天在验证总结JavaScript的this指向的情况,当总结到setTimeout和setInterval的this时有了新的发现。
废话不多数,先旗帜鲜明地给出结论:
1、setTimeout和setInterval定时器的第一个参数执行函数的this指向,在浏览器中永远指向window对象,在node.js环境中永远指向当前定时器的实例对象;
2、在浏览器中,调用setTimeout 和 setInterval 返回了一个定时器id数字,而在node.js中返回的是当前定时器的实例对象,差别明显。
接下来验证:
在浏览器中运行如下代码:
let obj = {
foo: function () {
let timer = setTimeout(
function () {
console.log(this);
console.log(typeof timer, timer);
}, 200);
}
}
obj.foo();
运行结果:

没问题,this指向window对象;
再看在node.js中,执行如下代码:
let obj = {
foo: function () {
let timer = setTimeout(
function () {
console.log(this === timer);
console.log(typeof timer);
console.log(this);
}, 200);
}
}
obj.foo();

可以看到this,指向当前定时器实例timer。
减少一下干扰代码,去掉外层的对象,如下:
let timer = setTimeout(
function () {
console.log(this === timer);
console.log(typeof timer);
console.log(this);
}, 200);

结果完全相同。
而且还得到另一个结论:
在浏览器中,调用setTimeout 和 setInterval 返回了一个定时器id数字,而在node.js中返回的是当前定时器的实例对象,差别明显。
随机文章
友情链接交换关键词排名优化
网站内容优化
SEO小小课堂网
SEO教程
友情链接交换
搜素引擎算法
关键词排名优化
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/24824.html

微信扫一扫
支付宝扫一扫