this的使用场景:app
this要在执行时才能确认值,定义时没法确认
var a = { name:"A", fn:function(){ console.log(this.name); } } a.fn();//this===a a.fn.call({name:"B"});//this==={name:"B"} var fn1 = a.fn; fn1();//this===window
改变上下文this指向。函数
//call function fn2(name,age){ alert(name);//zhangsan console.log(this);//{x: 100} } fn2.call({x:100},'zhangsan',20); //apply function fn3(name,age){ alert(name);//lisi console.log(this);//{y: 200} } fn3.apply({y:200},['lisi',30]);
在函数表达式后边改变函数的上下文。this
var fn4 = function(name,age){ alert(name);//wangwu console.log(this);//{z: 300} }.bind({z:300}); fn4('wangwu',40);