this指向问题:
普通函数中的this:指向window
事件函数中的this:指向事件源
构造函数中的this:指向实例对象
具体对象中的this:指向当前对象
call、apply、bind能修改函数的this指向
var stu={
name:'zs'
}
function fn(){
console.log(this);
//正常情况下this指向window
//怎么让this指向stu对象?
}
fn();
//call调用fn函数,修改this指向
//参数1:this所要指向的对象
//参数2,3……:函数的实参
//fn.call(参数1,参数2,参数3);
fn.call(stu,1,2);
//apply调用fn函数,修改this指向
//参数1:this所要指向的对象
//参数2,3……:函数的实参**以数组的形式传递**
//fn.call(stu,[1,2]);
fn.apply(stu,[1,2,3]);
//bind不会直接调用函数,返回一个新的函数,修改了this的指向
//fn.bind(参数1,参数2,参数3)
//参数1:this所要指向的对象
//参数2,3……:函数的实参
//fn.call(参数1,参数2,参数3);
var fn1 = fn.bind(stu,1,2);
fn1(); //可以这样调用
三个函数的区别:
call和apply都可以直接调用函数
call直接书写参数
apply实参是数组的形式
bind不会直接调用函数,而是返回一个新的函数