this的动态切换,固然为 JavaScript 创造了巨大的灵活性,但也使得编程变得困难和模糊。有时,需要把this固定下来,避免出现意想不到的情况。JavaScript 提供了callapplybind这三个方法,来切换/固定this的指向。

 1 1、函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。
2 var obj = {};
3
4 var f = function () {
5 return this;
6 };
7
8 f() === window // true
9 f.call(obj) === obj // true
10
11
12 2、apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数,使用格式如下。
13 function f(x, y){
14 console.log(x + y);
15 }
16
17 f.call(null, 1, 1) // 2
18 f.apply(null, [1, 1]) // 2
19
20 3、bind()方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。
21 var counter = {
22 count: 0,
23 inc: function () {
24 this.count++;
25 }
26 };
27
28 var func = counter.inc.bind(counter);
29 func();
30 counter.count // 1

最新文章

  1. 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制
  2. DedeCMS 5.7 后门漏洞
  3. 收集的冻结table 标题和左侧(完美)
  4. GLSL学习_高斯滤波
  5. 【Unity3D】枪战游戏—弹孔设置
  6. springside springmvc 的一个SB问题
  7. poj 2001 Shortest Prefixes
  8. Notes常用事件整理
  9. 新出台的治理iMessage垃圾短信的规则
  10. trove 开发者阅读翻译
  11. bind() unbind()绑定解绑事件
  12. npm常用命令及版本号浅析
  13. PE文件简介
  14. 【Redfin SDE intern】跪经
  15. 虚拟机centos7服务器下,启动oracle11g数据库和关闭数据库
  16. Spring Cloud(Dalston.SR5)--Config 集群配置中心-加解密
  17. python基础类型—元祖
  18. 运行msckf_vio
  19. 几种开源的TCP/IP协议栈分析
  20. linux内存碎片防治技术

热门文章

  1. 关于Spring的IoC容器,你了解多少
  2. 学习Java Day27
  3. 分布式共识算法随笔 —— 从 Quorum 到 Paxos
  4. JZOJ 1077. 【GDKOI2006】防御力量
  5. JZOJ 5432. 【NOIP2017提高A组集训10.28】三元组
  6. 添加material ui库
  7. SqlServer取分组第一条数据
  8. z order curve
  9. Qt控制台输出显示乱码
  10. JavaWeb 之 Http