一、什么是this指向

1.在js中,this的意思为“这个;当前”,是一个指针型变量,它动态指向当前函数的运行环境。

2.在不同的场景中调用同一个函数,this的指向也可能会发生变化,但是它永远指向其所在函数的真实调用者;如果没有调用者,就指向全局对象window。

二、全局环境下的this指向

1.在全局作用域中的this指向,指向window这个全局对象,这里包含了普通函数、匿名函数、立即执行函数

1. 普通函数

function demo(){console.log(this);
}

指向window这个全局对象

2.匿名函数

function(){console.log(this);
}

指向window这个全局对象

3.立即执行函数

(function(){console.log(this);
})()

指向window全局对象

三、ES6新增箭头函数的this指向

箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this

var obj = { uname: "张三", age: 21 }function fn() {console.log(this,"外层函数")return () => {console.log(this,"箭头函数")}
}let result = fn.call(obj)
result()

四、this指向的总结

1. this总是指向函数的直接调用者(而非间接调用者)

2.如果有new关键字,this指向new出来的那个对象

3.在事件中,this指向目标元素,特殊的是IE的attachEvent中的this总是指向全局对象window

函数类型 this的指向
普通函数 指向window
匿名函数 指向window
立即执行函数 window
回调函数 window
箭头函数 函数定义位置的上下文this
对象下的函数 谁调用,指向谁
dom回调 绑定事件的对象

彻底理解this指向相关推荐

  1. this指向,认识与理解this指向

    this指向 故心故心故心故心小故冲啊 文章目录 this指向 下面从几方面来理解this 1.简单函数 2.内置函数 3.回调函数 4.数组 5.对象 6.改变对象指向(call apply bin ...

  2. 前端面试——如何理解this指向?

    目录 前言 一.this在不同函数中的指向 1.普通函数this指向全局对象 2.构造函数指向new这个对象 3.箭头函数指向上一级作用域 4.对象函数指向这个对象 5.数组中有函数,指向这个数组 6 ...

  3. java 句柄池_深入理解JVM之Java对象的创建、内存布局、访问定位详解

    本文实例讲述了深入理解JVM之Java对象的创建.内存布局.访问定位.分享给大家供大家参考,具体如下: 对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含 ...

  4. 带参函数_更好的理解Python第五弹函数预处理与指针

    编译预处理 预处理概念:在编译之前进行处理 在C语言中,预处理行为宏定义,文件包含,条件编译 指令 用处 # 无 #define 定义一个宏 #undef  取消定义一个已经定义的宏 #include ...

  5. c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针

    #include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...

  6. C# 内存的理解 通俗说

    一.概念 堆栈是什么? 在说堆栈之前,先说说内存是神马? 内存:程序在运行的过程,电脑需要不断通过CPU进行计算,这个计算的过程会读取并产生运算的数据,这些数据需要一个存储容器存放.这个容器,这就是内 ...

  7. 不允许指针指向不完整的类类型_8.7 C语言动态内存分配与指向它的指针变量

    01什么是内存的动态分配 1.全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个"栈"的区域. 2.C语言允许建立内存 ...

  8. java 参数理解,JAVA参数传递值传递的理解。

    首先明确一下:java里面只有值传递,引用传递只是一只误读而已. 来看一个例子: public static void main(String[] args) { StringBuffer str1 ...

  9. C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)

    文章目录 写在前面 一.思考指针的基础 1.指针的实质 2.指针的层次 3.指针的分类 4.两个符号(&和*) 二.单指针(int *p) 三.指针数组(int *p[10]) 四.行指针(i ...

最新文章

  1. 【C 语言】字符串模型 ( 键值对模型 )
  2. c++能过,g++过不了
  3. php取商,PHP获取百度关键词排名
  4. AzCopy – 上传/下载 Windows Azure Blob 文件
  5. ubuntu 16.04下安装mysql
  6. 洛谷 P2894 酒店 Hotel
  7. IScroll5 参数说明和调用方法
  8. matlab求数组转置,数组与矩阵运算 - MATLAB Simulink - MathWorks 中国
  9. sdut 1299 最长上升子序列
  10. 对“陶哲轩-来自特征值的特征向量”的理解
  11. Pytorch实现EfficientNet
  12. python 网络 select
  13. 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
  14. python英语词汇读音_40行Python代码区分英语单词和汉语拼音
  15. Flutter 图片选取 image_picker
  16. 笔记本硬盘与移动硬盘之间的转换
  17. Mac OS编译C++库(XCode)
  18. targetSdkVersion 从22提到25 你需要知道的一切
  19. 意群是记忆的最小单位
  20. 华为od统一考试B卷【机器人走迷宫】Java 实现

热门文章

  1. zynq设计学习笔记7-AXI简介
  2. 免费搜索引擎登录入口
  3. 基于vue-strap的轮播组件,下载即用
  4. 熔化极气体保护电弧焊简介
  5. ctp量化交易接口文档
  6. 1.11两阶段提交协议
  7. 2个月的程序员当了高中信息技术教师
  8. HTTPS加密过程详解
  9. Centos安装mysql rpm包
  10. Pascal Voc数据集介绍