ES5 綁定 this 的方法
this的動態切換,固然為 JavaScript 創造了巨大的靈活性,但也使得編程變得困難和模糊。有時,需要把this固定下來,避免出現意想不到的情況。JavaScript 提供了call、apply、bind這三個方法,來切換/固定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

浙公網安備 33010602011771號