javascript - 这段代码为什么弹出undefined,求详细注释
本文介绍了javascript - 这段代码为什么弹出undefined,求详细注释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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也会弹出来
解决方案
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
。
这篇关于javascript - 这段代码为什么弹出undefined,求详细注释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文