JavaScript - this指向以及强行改变this指向
this 指向
-官方:指当前代码执行的上下文环境(context)
-私人:
就是一个使用在作用域内(全局 / 函数内)的关键字
全局作用域 this
->在全局作用域内,this就是window(特指前端JS)
函数作用域 this
定义:不管函数在哪定义,不管函数怎么定义,只看函数的调用方式(箭头函数除外)
1、普通调用
-函数名()
-函数内的 this 指向 window
2、对象调用
-对象名.函数名()
-函数内的 this 指向 点( . )前面的全部内容
3、事件处理函数
-事件源.on事件类型 = 函数
-事件源.addEventListener(‘事件类型’,函数)
-函数内的 this 指向 事件源(绑定在身上的事件)
4、定时器处理函数
-setTimeout(函数,数字)
-setInterval(函数,数字)
-函数内的 this 指向 window
5、自调用函数
-(函数)()
-函数内的 this 指向 window
6、箭头函数
-() => {}
-函数内的 this 是该箭头函数外部作用域的 this
-唯一一个不看调用看定义决定 this 的
强行改变 this 指向
this 指向是因为函数的调用而出现的
在调用函数的的时候,改变函数内的this指向
1、call ()
语法:直接连接在函数后面使用
函数名.call()
对象名.函数名.call()
参数:
第一个参数:函数内的 this 指向
第二个参数开始:依次给是该函数的实参
特点:立即调用函数
2、apply()
语法:直接连接在函数后面使用
函数名.apply()
对象名.函数名.apply()
参数:
第一个参数:函数内的this指向
第二个参数:是一个数组或者伪数组类型都可以,内部每一个数据按照顺序是该函数的实参
特点:立即调用函数
特殊作用:改变函数传递参数的方式
3、bind()
语法:直接连接在函数后面使用
函数名.bind()
对象名.函数名.bind()
参数:
第一个参数:函数内的this指向
第二个参数开始:依次给是该函数的实参
特点:不会立即调用函数,而是返回一个新的函数,新函数内的this被锁定死了
特殊作用:改变那些不会被立即调用的函数的 this
JavaScript - this指向以及强行改变this指向相关推荐
- this指向和如何改变this指向 (详解)
注:颜色标识为重要字眼. 目录:-this详解 -改变this指向的方法 一.this概述 它是JS的关键词,是一个代词"指代不明",需要代码执行过程中根据 ...
- JS篇之this指向以及如何改变this指向
this指向的几种类型 1.作为普通函数调用 this指向window var x = 1 var y = 2 function test(){var x = 2co ...
- this指向,并改变this指向
不同场景下的this指向问题 window 在js文件中直接打印this console.log(this); // window 浏览器中如下: 对象 1.首先创建一个平平无奇 对象,在方法中打印t ...
- javaScript改变this指向的三种方法
javaScript提供了一些函数方法帮助我们处理函数内部this的指向问题,常用的有bind().call().apply()三种方法 1.call() 方法调用一个对象.简单理解为调用函数的方式, ...
- JavaScript基础--改变this指向的方法
1. this指向 this随处可见,一般谁调用,this就指向谁.this在不同环境下,不同作用下,表现的也不同. 以下几种情况,this都是指向window的: ① 全局作用下,this指向的是w ...
- java改变this指向_$.on()方法和addEventListener改变this指向
jQuery $.on()方法和addEventListener改变this指向 标签(空格分隔): jQuery JavaScript jQuery $.on() jq的绑定事件使用$([selec ...
- 作用域和改变this指向
1,作用域和自由变量 作用域代表了一个变量的合法范围,一个变量的作用域是程序源代码中定义的这个变量的区域. 1,全局作用域 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量 就是在最 ...
- 为什么要改变this指向?
首先this是什么? 按照官方正规的解释,this关键字的意义被解释为"指向当前对象的引用".this是面向对象语言中的一个重要概念,在JAVA,C++等面向对象的语言中,this ...
- 箭头函数 改变this指向
1.箭头函数 <div>我是div</div><script>const oDiv = document.querySelector('div');// 普通函数o ...
最新文章
- 面试热点|理解TCP/IP传输层拥塞控制算法
- UA MATH567 高维统计III 随机矩阵4 欧氏空间上的集网与覆盖
- python array函数_Python numpy.array函数方法的使用
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
- P3846-[TJOI2007]可爱的质数【BSGS,数论】
- 《Code:The Hidden Language Of Computer Hardware and Software》 ——笔记
- 计算机组成原理(一)计算机系统概述
- Executors源码解读——创建ExecutorService线程池
- NLP最新趋势,7个主流业务场景!
- 【Luogu】P1972HH的项链(链表+树状数组)
- 以色列开发四旋翼无人机室内安保无人机-我爱无人机网
- java 偏向锁_Java偏向锁状态转移原理
- 机器人控制器编程课程-教案02-基础
- 目标板(linux)与PC 网卡 直连(TFTP)
- timesat数据如何读取_判二手车调表车另类方法。如何利用OBD读取可靠数据(技术类)...
- 解决 HBuilderX 控制台报libpng warning: iCCP: cHRM chunk does not match sRGB的问题
- anki卡片浏览器_Anki Guide by Corkine
- 如何获得免费二级域名?仅需这一步
- 举例跟踪分析Linux内核5.0系统调用处理过程
- Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding
热门文章
- [Pytorch系列-61]:循环神经网络 - 中文新闻文本分类详解-3-CNN网络训练与评估代码详解
- mysql存储过程基础写法
- Linux_MySQL数据库基础
- 基于 Impala 的高性能数仓实践之物化视图服务
- Android 项目必备(二十六)-->获取手机中所有 APP
- 怎样将几个pdf文件合成一个?
- 薅羊毛专业版第三十六次更新
- Windows下使用Darknet训练自己的数据集(模型:yolov4-tiny、数据集:垃圾分类)
- 官宣:CSDN发放福利!免费使用自定义域名功能一个月!
- github.io网页无法打开(连接不是私密连接)