call(),apply()
- 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。
- 相同点: 这两个方法的作用是一样的。一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。
- 第一个参数就是一个对象,函数的this就会指向该对象。其余的参数是函数用到的参数,不同的是call是一个一个参数,apply则是接收一个包含所有参数的数组
function add(c,d){
return this.a + this.b + c + d;
}
var s = {a:1, b:2 };
console.log(add.call(s,3,4)); // 1+2+3+4 = 10
console.log(add.apply(s,[5,6])); // 1+2+5+6 = 14