var obj ={
a:1,
b:function () {
alert(this.a)
}};
var fun =obj.b; fun();还有下面这段代码,为什么会弹两次 var obj ={
a:alert(1),
b:(function(){alert(2);}())
};
var fun =obj.b; fun();只引用obj.b,为什么obj.a也会弹出来
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
this的行为有时候会显得极其诡异,让人感到困惑,但只需要记住 this的值要等到代码真正执行时才能确定
同时this的值具体有以下几种情况:
new调用时指的是被构造的对象call、apply调用,指向我们指定的对象对象调用,如执行
obj.b(),this指向obj默认的,指向全局变量
window(相当于执行window.fun())
这样看来,当你执行fun()的时候,以上1,2点均不满足。
第3点,因为this是运行时确定的,而我们执行fun(),等同于windown.fun()(与obj没有任何关系),自然的this指向window,而window没有定义变量a,结果是undefined。
添加回答
举报
0/150
提交
取消
