首页 > 其他分享 >JS中的this指向

JS中的this指向

时间:2023-02-21 11:11:37浏览次数:37  
标签:函数 指向 对象 JS call apply 全局

this的概念:

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

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

有以下六点:

1.单独使用 this,它指向全局(Global)对象。

2.在对象方法中, this 指向调用它所在方法的对象。

3.函数使用中,this 指向函数的所属者。

4.严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。

5.在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素。

6.apply 和 call 允许切换函数执行的上下文环境(context),即 this 绑定的对象,可以将 this 引用到任何对象。

一、全局环境下的this指向

在全局作用域下,this始终指向全局对象window,无论是否是严格模式

二、函数内的this

三、对象中的this

对象内部方法的this指向调用这些方法的对象,也就是谁调用就指向谁

四、箭头函数中的this

箭头函数:this指向于函数作用域所用的对象。

五、构造函数中的this

构造函数中的this是指向实例。

六、原型链中的this

this这个值在一个继承机制中,仍然是指向它原本属于的对象,而不是从原型链上找到它时,它所属于的对象。

七、改变this指向的方法

相同点:

call、apply和bind都是JS函数的公有的内部方法,他们都是重置函数的this,改变函数的执行环节。
不同点:

bind是创建一个新的函数,而call和aplay是用来调用函数;
call和apply作用一样,只不过call为函数提供的参数是一个个地罗列出来,而apply为函数提供的参数是一个数组
————————————————
版权声明:本文为CSDN博主「XXXxxx光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_55990909/article/details/124752030

标签:函数,指向,对象,JS,call,apply,全局
From: https://www.cnblogs.com/niufang/p/17140192.html

相关文章

  • python、js实现WGS84、高德(火星)、百度坐标转换
    在日常工作学习中常会涉及到WGS84、高德(火星/谷歌)、百度三种空间坐标系的坐标转换,本文将通过python、js两种语言实现坐标系的转换。坐标系说明:wgs84:为一种大地......
  • C++ json库jsoncpp 吐槽
    Explain   最近在做游戏接入SDK时用到C++的json库jsoncpp,jsoncpp 是一款优秀的json库,但恶心的一点是它采用Assert作为错误处理方法,而assert在linux下通过调用abort......
  • js double bitwise not ~~ All In One
    jsdoublebitwisenot~~AllInOnejs双非位运算~~0vsNaNconstarr=[];//[]~~arr.pop();//0+arr.pop();//NaNconstarr=[];//[]consta=ar......
  • js---弹框提示和确认提示
    最近在开发PC端项目的时候,涉及到前后端交互,需要有一个弹框提示和一个确认弹框的提示,当然使用浏览器的alert和confirm就能够解决这个问题,但是这个的样式太丑了,不好看,考......
  • spring中处理json
    1.使用fastJson2.controller层@PostMapping("")@ResponseBodypublicBaseResponsejsonFunction(@RequestBodyStringjsonData){BaseResponsebaseResponse=ne......
  • 第一章、nodejs高级
    目录一、nodejs基础1、认识nodejs2、nodejs的特性3、使用nodejs需要了解多少javascript4、浏览器环境vsnode环境5、开发环境搭建二、模块、包、commonjs1、为什么要有模块......
  • Vue 3 兄弟组件间传值 | mitt.js
    Vue3中兄弟间传值可以使用Vuex,但小项目使用过于庞大,我们可以使用mitt进行兄弟组件间传值。操作步骤第一步:安装mittnpmimitt第二步:创建文件(例如:eventBus.js)impo......
  • jsp页面交互
    1、什么是内置对象?JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。在JSP页面中,可以通过存取JSP内置对象实现与JSP页......
  • 用jquery.form.js 实现ajax提交含有上传文件和普通字段的表单
    前两天用到ajax提交含上传图片的表单。实现的功能比较简单,但是使用ajax提交表单form.serialize只能实现普通的字段提交,上传图片却不能使用。网上很多都是推荐使用jquer......
  • Node.JS 流式文件的读取
    视频07.流式文件读取.js08.流式文件读取.js......