【JS】JavaScript中的this

var a = 1;
function test2(){
	alert("a的值是:"+this.a);  // 加了this就只在主调对象里搜索
}
test2();  // 输出“a的值是1”
test2.call(window);  // 输出“a的值是1”

var o = new Object();
test2.call(o);  // 输出“undefined”;</span>


分析:

this前缀的作用:

1.当在函数里访问一个变量时,如果使用this前缀,程序只搜索主调对象里是否包含该实例变量,如果不存在,当成undefined处理

2.如果没有this前缀,

a.程序会先搜索当前函数中是否存在该局部变量;

b.如果a搜索不存在,程序会搜索主调对象中是否存在该实例变量;

c.如果b搜索还不存在,程序会搜索主调对象所在的对象中是否存在,若没有,则一直向上搜索,直到window对象为止



注意与下面例子的区别:

var myfun = function(a, b){
	alert("a的值:"+a);
	alert("b的值:"+b);
	this.test = a + b;
};

myfun(1, 2);
alert(window.test);  // 输出“3”
	
var o = new Object();
myfun.call(o, 2, 3);
alert(o.test);  // <span style="font-family: FangSong_GB2312;">输出“5”</span>

注意:第二个例子中test是定义在函数里的实例变量,哪个对象调用该函数,this就代表哪个对象;而第一个例子中的a是属于window的局部变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值