0%

call和apply都用于调用函数,第一个参数将用作函数内 this 的值。然而,call接受逗号分隔的参数作为后面的参数,而apply接受一个参数数组作为后面的参数。

1
2
3
4
5
6
function add(a, b) {
return a + b;
}

console.log(add.call(null, 1, 2)); // 3
console.log(add.apply(null, [1, 2])); // 3
阅读全文 »

粗略地讲,函数的调用方式决定了this的值,谁调用的函数,this就指向谁。this取值符合以下规则:

1.如果函数作为构造函数用,那么其中的this就代表它即将new出来的对象。

2.如果applcallbind方法用于调用、创建一个函数,this的值就取传入的对象的值。

3.如果函数作为对象的一个属性时,并且作为对象的一个属性被调用时,函数中的this指向该对象。比如当obj.method()被调用时,函数内的 this 将绑定到obj对象。

阅读全文 »