js this是什么?[多次书写]

前言

以前的时候,我写了一个关于js this的博客,写的非常复杂,分析了各种情况。
现在我想简化。
如果你有后台基础,专门去理解过this,那么请忘记。
这东西是有口诀的:

在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象。
在函数中,this 表示全局对象。
在函数中,在严格模式下,this 是未定义的(undefined)。
在事件中,this 表示接收事件的元素。
类似 call() 和 apply() 方法可以将 this 引用到任何对象。

看题

该题来自阮一峰的博客。

  var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());

这个this.name 的this是什么?
答案是:"The Window"
看公式:

在函数中,this 表示全局对象。

在这里this.name 是在匿名函数中,那么this就是全局对象。
在没有call() 和 apply()可以直接这么理解。
如果存在call和apply,那么需要根据步骤考虑。
这里难以理解的是什么是函数,什么是方法?
权威指南解释:

  函数(function): 函数是带有名称(named)和参数的JavaScript代码段,可以一次定义多次调用。

  方法(method): 当将函数和对象合写在一起时,函数就变成了 "方法"(method)// 当函数赋值给对象的属性,我们称为"方法"
posted @ 2020-02-27 14:57  敖毛毛  阅读(162)  评论(0编辑  收藏  举报