非箭头函数中的this指向一般都是调用者
在非箭头函数中
谁调用了函数,那么函数的this指向就是谁
比如
      let obj1 = {
        name:'obj1',
        say:function(){
            console.log('非箭头函数',this.name)
        }
    }

obj1.say() 调用之后this指向就是obj1,因为调用者是obj1

而箭头函数没有自己的this,在哪里定义箭头函数,箭头函数就会绑定到外层的this
箭头函数的this跟谁调用它并没有关系 只看在哪里定义
<script>
    let obj = {
        name:'obj',
        say: () =>{
            console.log('箭头函数',this.name)
        }
    }
<script>

obj.say() this指向就是window对象 严格模式下则是undefined
因为对象在定义的时候是全局的,它的this指向是window,箭头函数会继承外部的this指向
一般来说,箭头函数大多数时候都是指向window或者undefined,而如果是在一些框架中可能会绑定到某个对象上面,这其实是框架帮我们指定了箭头函数的外部的this指向

比如在普通函数里面使用箭头函数

代码如下
<script>
    let obj = {
        name: 'obj',
        say: function() {
            console.log(this.name)
            let myArrow = () => {
                console.log(this.name)
            }
            myArrow()
        }
    }
   
   obj.say() //obj

function Person () {
       this.name = 'person'
       this.say = obj.say
   }
   let xiaoming = new Person()
   xiaoming.say() //person

</script>

首先,普通函数里面定义了一个箭头函数,箭头函数的this就指向了外层函数的this
但是在普通函数中,this是需要运行时才会绑定到对应的对象,也就是运行的时候谁调用就指向谁

所以在执行obj.say的时候say的this是obj,所以箭头函数的this也是obj

而当使用new运算符时,构造函数的this指向它的实例对象xiaoming,所以调用say的时候this指向了实例化的对象,所以箭头函数this也指向实例化的对象

js this指向哪里 JavaScript this指向相关推荐

  1. JavaScript对象this指向(普通键this指向 非指向函数的键)

    1.结论 JavaScript对象普通键(非指向函数的键)this指向是window. 2.示例 <!DOCTYPE html> <html lang="zh"& ...

  2. javascript this指向总结

    javascript this指向总结 1.单独的this,指向的是window这个对象 alert(this) // this -> window 2.全局函数中的this function ...

  3. JS回调函数中的this指向

    什么是this:自动引用正在调用当前方法的.前的对象. this指向的三种情况 obj.fun() fun中的this->obj,自动指向.前的对象 new Fun() Fun中的this-&g ...

  4. JS(四)--JavaScript 面向对象编程

    JavaScript 面向对象编程 一.JavaScript 面向对象编程 1.1..什么是面向对象编程 1.2.面向过程和面向对象的对比 1.3.JavaScript 中的对象? 1.3.1.属性和 ...

  5. 蓝鸥原生JS:js的历史及JavaScript的优缺点

    蓝鸥原生JS:js的历史及JavaScript的优缺点 蓝鸥零基础学习HTML5-html+css基础 http://11824614.blog.51cto.com/11814614/1852769 ...

  6. js鼠标事件大全-Javascript鼠标事件大全

    js鼠标事件大全-Javascript鼠标事件大全 2009年03月11日 星期三 14:22 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick 当键盘上的某个键被按下并且释放时 ...

  7. JS和JS是IE上JavaScript或JScript的缩写。

    JS和JS是IE上JavaScript或JScript的缩写. javascript是所有浏览器的开放式标准脚本语言 JScript是微软自己的开放式脚本语言标准,只有微软的IE浏览器遵循. JScr ...

  8. 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2

    写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2.要求当s1=s2 ...

  9. 重新巩固JS(一)——JavaScript基本类型

    文章目录 JavaScript基本类型 1. 原始类型: 1.1 数值-Number 1.2 字符串-String 1.3 布尔值-Boolean 1.4 字符-Symbol(ES6新增) 1.5 U ...

最新文章

  1. Java多线程学习处理高并发问题
  2. MPB:清华杨云锋组-利用GeoChip分析环境微生物功能基因群落结构
  3. c语言中 d的用法,C语言中的#define用法总结
  4. linux下OpenSSL的RSA密钥生成
  5. QT的QDeadlineTimer类的使用
  6. gdiplus判断一个点是否在圆弧线上_福建教师招聘考试小学数学面试教案:圆的认识...
  7. 201触摸ic应用电路_有源电力滤波器的设计原理及应用前景-安科瑞蒋超萍
  8. leetcode python3 简单题168. Excel Sheet Column Title
  9. Lesson_8 上课笔记 ----继承
  10. MATLAB软件基础
  11. Hadoop工程包架构解析
  12. Android-Handler机制简述
  13. 新手php环境一键安装包,PHP运行环境一键安装包(phpStudy2013)
  14. 接口测试平台代码实现16:吐槽功能后台实现+orm初识
  15. 用一行python代码用openpyxl找到excel某一列的最大行数
  16. Python 遗传算法实现字符串
  17. Spirng的事务 方法A调用方法B,事务是否失效
  18. python成语接龙源代码,基于Tkinter,带成语解释
  19. Boosting(一)
  20. 对伪装docx文件病毒的逆向分析

热门文章

  1. 网上最全的系统服务想PF降到50以下(转)
  2. 静态库与动态库(共享库)的联系与区别
  3. Java中的数字工具类-----持续总结中
  4. 第一次竞赛-A.质数的最大乘积
  5. JSP, Servlet常见面试题详解
  6. python导入scipy库、sympy库遇到的问题及解决方式
  7. 常见六大Web安全问题
  8. Fiddler系列教程2:手机抓包图文教程
  9. 职称计算机考试 ps太难,2012年职称计算机考试photoshop常用技巧(3)
  10. 180721 逆向-极客巅峰(Re)