简述JS中THIS的指向?

JS 关于 this 指向的几种情况 一、this 指向 window 1、全局函数里面的 this 指向 window 2、箭头函数里面的 this 指向 window // 定义全局变量 title 与函数 foo var title = 'hello,world' // 注意:若使用 let 定义则不属于全局变量 function foo() { console.log(this.title) } function arrow() { let title = 'hello,arrow' return () => { re 阅读详情

这里是修真院前端小课堂,每篇分享文从

八个方面深度解析前端知识/技能,本篇分享的是:

【简述JS中THIS的指向?】

大家好,我是IT修真院武汉分院web第16期的学员孟晨,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网js(职业)任务四,深度思考中的知识点——简述JS中THIS的指向?

1.背景介绍
this是什么?它有着什么样的功能?
this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

this的特性:
this的指向在函数创建的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象

2.知识剖析
下面会用一系列的代码片段来详细解读this

  1. 作为普通函数在全局环境中被调用

在全局环境里面,this 永远指向 window,因此在全局环境里作为普通函数被调用的时候,this 也是指向 window。

这里调用了a函数,而a函数的执行环境是全局环境,这里的this也就指向了全局变量window。

在全局环境里面,this 永远指向 window,因此在全局环境里作为普通函数被调用的时候,this 也是指向 window。

2.作为对象的属性被调用

先来个总结:如果函数作为一个对象的属性方法,并且被调用的时候,那么这个属性方法中的this 就指向这个对象,来看代码:

这里出现的结果与上面相同,因为this指向它的直接上级

稍微复杂一点的情况

这里同样也是对象o点出来的,但是同样this并没有执行它

通过以上例子可以有一下结论

情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window

情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象

情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

但是还有一个特殊的例子

?这里this指向的还是window

想要明白为什么还需要理解一句话

即this永远指向的是最后调用它的对象

也就是看它执行的时候是谁调用的,虽然函数fn是被对象b所引用,但是在将fn赋值给变量j的时候并没有执行所以最终指向的是window,这和之前例子是不一样的,之前是直接执行了fn。

3.作为构造函数被调用

作为构造函数被调用的时候,this 代表它即将 new 出来的对象;

如果不加 new,表示即作为普通函数调用,指向 window。

如果不加 new,表示即作为普通函数调用,指向 window。

4.作为 CALL/APPLY/BIND 方法的调用

作为 call/apply/bind 方法被调用的时候指向传入的值。

5.绑定事件,事件触发后的THIS

元素绑定事件,事件触发后,执行的函数中的this 指向的是当前元素(标签)

3.常见问题
THIS遇到RETURN怎么办?

如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。

虽然null,undefind也是对象,但是在这里this还是指向那个函数的实例,因为null,undefind比较特殊。

可以看看例子

再来2个

然后有个较为特殊的就是null虽然也是对象,但表现出来的是这样的

5.代码实战
6.拓展思考
如何改变this的指向?

setTimeout、setInterval中的this是指向哪里?

如何改变this的指向?

可以使用call或者apply的方法改变指向

如果xxxx.call(a),this就指向a;当a为null或者undefined的时候,会指向window; 假如说要传参,构造函数名.call(“a”,“b”,“c”),它的第一个参数传到的是this;apply类似,但是与之不同的是,要书写成: 构造函数名.apply(“a”,[“b”,“c”])的形式,这就是差别;

可以看一看例子

setTimeout、setInterval中的this是指向哪里?

《 javascript 高级程序设计》中写到:“超时调用的代码都是在全局执行域中执行的”。setTimeout/setInterval 执行的时候,this 默认指向 window 对象,除非手动改变 this 的指向。

还是看一看例子

之前说过,如果直接执行回调函数而没有绑定作用域,那么它的’this’是指向全局对象(‘window’),在严格模式下会指向’undefined’,然而在’setTimeout’中的回调函数在严格模式下却表现出不同

看看例子

按理说我们加了严格模式,foo 调用也没有指定’this’,应该是出来 ‘undefined’,但是这里仍然出现了全局对象,难道是严格模式失效了吗?
并不,即使在严格模式下,‘setTimeout’ 方法在调用传入函数的时候,如果这个函数没有指定了的 ‘this’,那么它会做一个隐式的操作----自动地注入全局上下文,等同于调用’foo.apply(window)'而非 ‘foo()’;
当然,如果我们在传入函数的时候已经指定 ‘this’,那么就不会被注入全局对象,比如: ‘setTimeout(foo.bind(obj), 1);’;

7.参考文献
JavaScript中的this
彻底理解js中this的指向,不必硬背。

8.更多讨论

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

北航机器学习2020-2021秋季学期期末试题回忆 北航机器学习2020-2021秋季学习期末试题回忆 fanjn, zhangyy, yuanq, wanggq, weixy, anh, wangyy, zhouxy, likc1 【注:考试使用纯白的A3答题纸,考试时间2h,各位同学可以自行模拟考试】 此试卷1-8题为10分,第9题为20分 1.2077年人类发射近地卫星,一共发射800颗,根据大小和轨道远近,有着不同的宜居条件(+表示宜居),有以下表格(数字八九不离十,其他属性什么的原题就是交替的) 数量 大小 轨道 是否宜居 30 阅读详情

相关推荐

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 299

this 概述

1、this是什么? this是一个关键字。 是一个变量,一个引用。this保存当前对象的内存地址,指向自身。所以,this代表的就是"当前对象" (this存储在堆内存当中对象的内部。) 2.this ()这个语法作用是什么? 代码复用。 3. this只能使用在实例方法(和构造方法)中。谁调用这个实例方法,this就是谁。 4.this省略情况" this."大部分情况下是可以省略的。(用来区分实例变量和局部变量时,不能省略) 5.为什么this不能使用在静态方法中? this代表的是当前对象,而静态方

wfl1486409520的博客 409

微信小程序PC端兼容性实战:如何绕过限制在电脑上运行手机端小程序

本文详细解析了微信小程序在PC端的兼容性问题及解决方案,重点介绍了如何利用`wx.getSystemInfo`API检测运行环境,并通过修改User-Agent、动态环境检测与适配等技术手段实现手机端小程序在PC端的顺畅运行。文章还提供了常见兼容性问题的解决方法和调试工具推荐,帮助开发者高效应对多端适配挑战。

weixin_28366053的博客 867

简述this的指向

1.背景介绍 this对象是在运行时基于函数的执行环境绑定的,在全局函数中,this就是window,当函数被作为某个对象的方法调用时,this就是那个对象,匿名函数的执行具有全局性,也就是说,匿名函数this指向window。 2.知识剖析 全局环境中的this functiontest(){console.log(this);                  }           ...

weixin_42192534的博客 585

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6092

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1782

this的指向有哪几种?一个文章让你理解明白!从此不在为this指向犯愁!

this的指向有哪几种?一个文章让你理解明白!从此不在为this指向犯愁!

CSON_Fuck的博客 1653

小白也能懂!一步步教你用FPGA加速YOLO目标检测(入门篇)

安装到 PYNQ 开发板中。该库为 PYNQ 平台提供了对量化神经网络(如 YOLO)的硬件加速支持。确保你的电脑已连接到外网,如 WiFi 或热点(手机热点理论上也可用,未实测)。当你看到安装成功的提示后,打开 Jupyter Notebook,你会发现在。趁这个机会,泡了杯茶,刷了会儿手机,顺便感慨了一下开源社区的强大……页面中多出了一些新的项目文件夹 —— 这就是我们刚才安装的。参数,浅拷贝只克隆最近一次提交,减少数据量,避免超时问题。初始化,打开该文件,即可运行我们的Tiny YOLO。

FJN110的博客 1597

简述JS中this的指向

这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇分享的是: 【简述JS中this的指向 】 1、背景介绍 我们在写代码时候往往希望一个函数在不同环境下行为风格一致但是具体表现不一样,这个时候就需要th...

weixin_34409703的博客 121

基于双向GRU LSTM DNN水电站水文数据的每日径流量预测 完整代码+数据 可直接运行

基于双向GRU LSTM DNN水电站水文数据的每日径流量预测 完整代码+数据 可直接运行

1902

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

简述 Javascript 中 this 的指向有哪些

// 在html中直接调用 // console.log(this) //Window //在function中调用 // function a(){ // let b = "aaaaa" // console.log(this.b) //指向Window 结果为undefined // } // a(...

wanghongpu9305的博客 262

基于STM32设计的智能井盖(Lora组网+4G上云)_423

设计并实现了一种基于 STM32 与 Lora 通信技术的智能井盖监测系统。系统采用 STM32F103C8T6 作为核心控制器,在井盖节点端集成水位检测、有害气体检测、倾斜角度检测以及 GPS 定位等功能模块,对井盖内部环境状态和姿态变化进行实时监测。各井盖节点通过 Lora 无线通信方式组成网络,将采集的数据发送至主机(网关)进行汇聚处理。

719

简述JS中的this指向

大家好,我是IT修真院深圳分院第06期学员,一枚正直善良的web程序员。今天给大家分享一下,关于JS中的this指向的知识点:在javaScript中,this是动态绑定的,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。 这就导致了this具备了多重含义,可以使得this可以更灵活地使用。 但是,带来了灵活性的同时也会给我们初学者带来不少困惑。 简而言之, this 是一个特...

qq_42293371的博客 912

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

简述js中this指向问题

适合初学者理解的js中this指向 1.出现在事件处理函数中,指向触发事件的node节点 <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> var liList = doc

EWJRQKJRQ的博客 331

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

javascript This指向问题简述

1、一般谁调用指向谁 2、DOM 0级,Dom 2级 ——绑定事件的元素 3、html——window 4、  setInterval、setTimeout——window 5、  闭包——window 6、  自执行函数——window 7、  call、apply——改变this指向 8、  在函数中默认是window   this关键字的用法   a、作为普通函数调用

can_Sunshine的博客 317

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript全解析——this指向

本系列内容为JS全解析,为千锋教育资深前端老师独家创作致力于为大家讲解清晰JavaScript相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【点个关注】持续追更~this 是一个关键字,是一个使用在作用域内的关键字作用域分为全局作用域和局部作用域(私有作用域或者函数作用域)全局作用域中this指向window函数内的 this, 和 函数如何定义没有关系, 和 函数在哪定义也没有关系,只看函数是如何被调用的(箭头函数除外)可分为以下场景:普通函数中的this和全局调用一样,this指向

sdasadasds的博客 632

JavaScript中的this指向,ES6箭头函数this指向

this指的是函数**运行时**所在的环境。this关键字只与函数的执行环境有关,而与声明环境没有关系。也就是这个this到底代表的是什么对象要等到函数运行时才知道。

weixin_41258179的博客 243

javascript中的this指向总结

javascript中,this的指向有下面4种情况: 1.  在构造函数中,this指向该构造函数new出来的那个对象。 function Foo() { this.a = 5; this.b = 10; this.c = this.a + this.b; console.log(this); /*{a:5, b:10, c:15}*/ }; var c = new Foo()...

littlebearGreat——宁静致远 2673

JavaScript的this指向概述

JavaScript/js/JS/javascript中this指向概括

weixin_56343236的博客 436

JS中的this指向

大家都知道,在面向对象编程中常常会用到this这个关键字。那么this代表什么,它的指向又是什么?下面就根据我所查阅到的一些资料和自己的理解说明一下js中的this指向问题。 this是什么? this是在函数运行时,自动在函数内部生成的一个对象。随着函数的使用场景不同,this的值也会发生变化。但总的一个原则是this永远指向调用this所在的函数的对象。 this指向的4种情况 一、this指...

xiaobai1520774的博客 350

JavaScript中this的指向

我们先说一个最简单的this在全局指向的是什么呢? 这个问题很简单在浏览器中测试this,全局指向的是window,不过在开发过程中this很少在全局使用,一般都是在函数内的 this有几种绑定规则? 绑定一:默认绑定 // 1.案例一: function foo() { console.log(this) } foo()//window // 2.案例二: function foo1() { console.log(this) } function foo2() { c

m0_51409813的博客 1201

js中this的指向、作用域和闭包

this指向问题 1、this在执行的时候才会确定指向的是什么,不执行无法确定。 this的几种不同的使用场景 构造函数 对象属性 普通函数 call、apply、bind 构造函数: this先指向一个空对象,再对this赋值,最后返回this; function Foo(name){ //this = {}; this.name = name; //return...

qq_34691738的博客 482
上一篇: angular js自定义指令 directive 如何使用?为什么要使用封装的自定义指令?
下一篇: 有哪些常见的验证表单方式(即时输入验证,失去焦点验证等),他们各自的优缺点是什么?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值