javascript - 这段代码为什么弹出undefined,求详细注释

查看:100
本文介绍了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的值具体有以下几种情况:

  1. new 调用时指的是被构造的对象

  2. callapply调用,指向我们指定的对象

  3. 对象调用,如执行obj.b()this指向obj

  4. 默认的,指向全局变量window(相当于执行window.fun())

这样看来,当你执行fun()的时候,以上1,2点均不满足。
第3点,因为this是运行时确定的,而我们执行fun(),等同于windown.fun()(与obj没有任何关系),自然的this指向window,而window没有定义变量a,结果是undefined

这篇关于javascript - 这段代码为什么弹出undefined,求详细注释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆