this.fun.apply(this,args)的问题
大家好,小弟刚入门,看书的时候偶然发现这么一句话,便感觉到非常疑惑,可能是小弟理解有问题:
fun.apply(obj,b)的作用就是让被调用的函数fun的this指向obj,但是这句话里fun函数本来就属于this,如果这样调用“this.fun(args)”也能够达到相同的效果,为什么要使用apply呢? javascript
[解决办法]
其实你已经知道apply的功能了,就是用来改变主体this
例:
obj1={msg:1};
obj2={msg:2};
function show(){ alert( this.msg ) }
show.apply(obj1);
show.apply(obj2)
[解决办法]
var obj1 = {
name : 'obj1 name'
} , obj2 = {
name : 'obj2 name'
} , name = 'window name';
function applyDemo(){
alert(this==obj1);
alert(this==obj2);
alert(this==window);
alert(this.name);
}
applyDemo();//this默认指向window对象
applyDemo.apply(obj1);//用apply改变作用域,使this指向obj1
applyDemo.apply(obj2);//用apply改变作用域,使this指向obj2