首页 > 不明白为什么js中this的指 ?

不明白为什么js中this的指 ?

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    
  </head>
  <body>
    <div id="example"></div>
    <script type="text/javascript">
      function add(){
        var ss = '3';
        function odd(){
          console.log(this);
          return '1';
        }
        odd();
      }
      add();
    </script>
  </body>
</html>

为什么这里的this 指向 window ? 我是看到作用域链的时候,实际在调用odd方法时创建了上下文,this为什么指向window?


首先要清楚 odd 并不是一个方法,只有当函数作为对象的属性调用时,才称之为方法

//方法
o.add();

//函数
add();

补充:

//构造函数
new Add();

函数如果不是使用 new 运行或者是使用 applycallbind 方法的话,this都指向全局对象(有的环境没window所以这么说)
你要指向的话请 new odd();


这里要搞明白函数的定义:包括在花括号的代码块。既然是代码块,又不是构造函数creat一个新对象,那么再复杂的函数,里面的this也指向全局对象


this永远都指向调用该方法的对象

【热门文章】
【热门文章】