ES5 绑定 this 的方法

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

 

posted @ 2022-11-24 16:07  没事就更  阅读(30)  评论(0编辑  收藏  举报