function中的魔鬼this,我们来说说。
function demo(){
conlose.log(this);
}
当我们调用demo()的时候,这里面的this指的是window这个对象。[如果是严格模式下this是undefined]
有些时候对象a有某个方法[比如是say],而对象b没有这个方法,但是我就想借用一下[不要在b上添加这个方法]
var a = {
name:'a',
say:function(){
conlose.log(this.name);
}
};
var b = {
name:'a'
}
我们可以这样使用 a.say.bind(b)();或a.say.call(b);或a.say.apply(b);
这里的this就是作用域,bing只是改变作用域,参数传递跟原方法一样。call和apply调用方法时,第一个参数$this是作用域this,
call传参数是 $this,a1,a2,a3....
apply传参数是 $this,[a1,a2,a3....]