函数名.call(对象,参数1,参数2...)
函数名.apply(对象,[参数1,参数2...])
var 函数名=函数名.bind(对象,参数1,参数2...)
call apply改变了函数内部this指向
bind可以用来记录这个改变,将这个改变另存为一个函数
call与apply的区别
call 接收参数列表,apply接收一个参数数组
var position = "window对象"
var obj = {
position: "obj对象"
}
function printColor(a, b) {
console.log(this.position)
console.log(a + b)
}
printColor(3, 4); //输出window对象 :this指向window
printColor.call(obj, 3, 4); //输出obj对象 :this指向obj
printColor.apply(obj, [3, 4]); //输出obj对象 :this指向obj,参数改用数组
//每次调用 printColor.call(obj, 3, 4); 比较麻烦,就使用bind记录这个函数
var record = printColor.bind(obj, 3, 4);
record() //就相当于 printColor.call(obj, 3, 4);