js this指向问题

                function show() {
                    console.log(this);
                    alert("ready");
                }
                show(); 
                console.log(this);
                
                这两个this都指向window 那么在外面加上$(document).ready...
                
            $(document).ready(function() {
                function show() {
                    console.log(this);
                    alert("ready");
                }
                show(); 
                console.log(this);
            });
            
            
            这两个this分别打印什么?为什么
阅读 2.2k
4 个回答

第一个 this 指向 window , 第二个 this 指向 document。
第一个是因为 相当于 window.show() ,第二个是在 reday 里面的回调函数中。

加了$(document),形成了一个函数作用域,所以,打印是document对象,函数只要不改变this指向,都是指向全局对象,在浏览器中即window对象。

this永远指向环境上下文;

第一个this,因为是在全局调用的,所以指向的是window;

第二个this,是在document.ready时调用,指向的是document;

对于this执行的问题,个人认为你就看他,谁调用就可以。这个this就指向他

  • 第一个指向的是window 因为是window调用;
  • 第二个指向的是document 因为是document调用的
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题