2015.9.24随笔
2015-09-24 23:23
381 查看
转:setTimeout和setInterval的this指向
因为settimeout的this指向window,所以此时调用window.fn,得不到想要的结果
两种方法改变this指向
以前看同学写var that = this;自己也跟着写,原来是这个作用。
function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn, 1000);//直接使用this引用当前对象 } } var o = new obj(); o.fn();
因为settimeout的this指向window,所以此时调用window.fn,得不到想要的结果
两种方法改变this指向
// 方法一: function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn.bind(this), 1000);//通过Function.prototype.bind 绑定当前对象 } } var o = new obj(); o.fn();
// 方法二: function obj() { this.fn = function() { var that = this;//保存当前对象this alert("ok"); setTimeout(function(){ that.fn(); }, 1000);//通过闭包得到当前作用域,好访问保存好的对象that } } var o = new obj(); o.fn();
以前看同学写var that = this;自己也跟着写,原来是这个作用。
相关文章推荐
- C和指针 (学习之旅)
- 关于"对称轴 (Symmetry, ACM/ICPC Seoul 2004, UVa1595"的讨论
- EXCEL的一些操作
- C#开发微信公众号之消息自动回复
- ajax的简单介绍,
- JAVA基础学习(十五)--集合二--TreeSet和泛型
- 在ABP项目的应用Castle Windsor
- 管道限流利器pv
- Mongodb后台daemon方式启动
- Windows 10中如何删除系统自带的应用
- git clone
- 【Android】解析Json数据
- 排序算法三:Shell插入排序
- LInq 与lambda表达式
- symfony框架的学习1
- 关于C++中new的一些理解
- Python 基础---字典、集合
- bash脚本中的典型例子
- [Effective Java 读书笔记] 第三章类和接口 第十八--十九条
- 第一百七十五天 how can I 坚持