1.全局下的this指向window
this.a=1;
alert(window.a); //1
2.事件里面的this指向事件源
var obj=document.getElementById('oDiv');
obj.onclick=function(){
alert(this.innerHTML) ;//这里的this指向obj
}
3.函数中的this谁调用就指向谁
var o={
name:'liuhua',
test:function(){
alert(this.name)
}
}
o.test(); //liuhua,这里函数由o调用,指向O
//注意:
var ff=o.test;
ff(); //此时this指向ff
4.由new调用? 绑定到新创建的对象。
call与apply改变this指向
call()
function.call(obj[,arg1[, arg2[, [,.argN]]]]])
调用call的对象必须是个函数function
call的第一个参数将会是function改变上下文后指向的对象(想要this指向谁)
第二个参数开始可以接收任意个参数,这些参数将会作为function的参数传入function
apply()
function.apply(obj[,argArray])
与call方法的使用基本一致,但是只接收两个参数,其中第二个参数必须是一个数组或者类数组
var o={
name:'cj',
print:function(){
alert(this.name);
}
}
function log(a,b){
alert(this[a]);
alert(this[b]);
};
//本来指向window,通过call,apply方法指向了O对象,所以才能读取到name,全局下是没有name的
log.call(o,'name','age'); //cj undefined
log.apply(o,['name','age']); //cj undefined
本文深入探讨JavaScript中this关键字的指向规则,包括全局作用域、事件处理、函数调用及new操作符的情况,并详解call与apply如何改变this的指向。
3116

被折叠的 条评论
为什么被折叠?



