彻底理解this指向
一、什么是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指向相关推荐
- this指向,认识与理解this指向
this指向 故心故心故心故心小故冲啊 文章目录 this指向 下面从几方面来理解this 1.简单函数 2.内置函数 3.回调函数 4.数组 5.对象 6.改变对象指向(call apply bin ...
- 前端面试——如何理解this指向?
目录 前言 一.this在不同函数中的指向 1.普通函数this指向全局对象 2.构造函数指向new这个对象 3.箭头函数指向上一级作用域 4.对象函数指向这个对象 5.数组中有函数,指向这个数组 6 ...
- java 句柄池_深入理解JVM之Java对象的创建、内存布局、访问定位详解
本文实例讲述了深入理解JVM之Java对象的创建.内存布局.访问定位.分享给大家供大家参考,具体如下: 对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含 ...
- 带参函数_更好的理解Python第五弹函数预处理与指针
编译预处理 预处理概念:在编译之前进行处理 在C语言中,预处理行为宏定义,文件包含,条件编译 指令 用处 # 无 #define 定义一个宏 #undef 取消定义一个已经定义的宏 #include ...
- c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
#include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...
- C# 内存的理解 通俗说
一.概念 堆栈是什么? 在说堆栈之前,先说说内存是神马? 内存:程序在运行的过程,电脑需要不断通过CPU进行计算,这个计算的过程会读取并产生运算的数据,这些数据需要一个存储容器存放.这个容器,这就是内 ...
- 不允许指针指向不完整的类类型_8.7 C语言动态内存分配与指向它的指针变量
01什么是内存的动态分配 1.全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个"栈"的区域. 2.C语言允许建立内存 ...
- java 参数理解,JAVA参数传递值传递的理解。
首先明确一下:java里面只有值传递,引用传递只是一只误读而已. 来看一个例子: public static void main(String[] args) { StringBuffer str1 ...
- C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)
文章目录 写在前面 一.思考指针的基础 1.指针的实质 2.指针的层次 3.指针的分类 4.两个符号(&和*) 二.单指针(int *p) 三.指针数组(int *p[10]) 四.行指针(i ...
最新文章
- 【C 语言】字符串模型 ( 键值对模型 )
- c++能过,g++过不了
- php取商,PHP获取百度关键词排名
- AzCopy – 上传/下载 Windows Azure Blob 文件
- ubuntu 16.04下安装mysql
- 洛谷 P2894 酒店 Hotel
- IScroll5 参数说明和调用方法
- matlab求数组转置,数组与矩阵运算
- MATLAB Simulink
- MathWorks 中国
- sdut 1299 最长上升子序列
- 对“陶哲轩-来自特征值的特征向量”的理解
- Pytorch实现EfficientNet
- python 网络 select
- 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
- python英语词汇读音_40行Python代码区分英语单词和汉语拼音
- Flutter 图片选取 image_picker
- 笔记本硬盘与移动硬盘之间的转换
- Mac OS编译C++库(XCode)
- targetSdkVersion 从22提到25 你需要知道的一切
- 意群是记忆的最小单位
- 华为od统一考试B卷【机器人走迷宫】Java 实现