js特效】JS 里为什么会有 this

2020-03-24 20:11发布

问题同上,JS里为什么有this


问题同上,JS里为什么有this


2条回答
周亚
2楼 · 2020-04-17 19:58

首先,Js 中的this是一个ECMAScript中定义的关键字,也就是说,我们可以在js的任意位置访问到它。this 可以被理解为指针,它的值在不同的情况下会指向不同的值。那么Js的this 究竟指向什么呢?


  1. 在一般情况下,我们都会说this 指向当前的指向上下文,那么执行上下文又是什么呢?执行上下文(简称-EC)是ECMA-262中定义的一个抽象概念,我们可以理解为不同地方的代码是在不同的执行上下文中的。那么我们就知道了,不同的地方的this会指向不同的值。

  2. 不同的执行上下文会形成一个堆栈,比如进入一个函数,会在栈顶添加一个执行上下文,this指向它,当前函数执行完毕会退出当前的执行向下文(从栈顶弹出),this会指向当前的栈顶。

  3. 一般而言在其它的编程语言中,this关键字与面向对象程序开发紧密相关,其完全指向由构造器新创建的对象。在js 中很多时候也是这样的,但是在ECMAScript中,this并不限于只用来指向新创建的对象。

由上可知,this的指向,在函数中,会根据函数执行情况而定,具体而言:

1.比如说,在事件处理函数中,如果要在事件处理函数中获取触发事件的元素,我们可以使用this来获取

2.在面向对象的开发中,如果需要在类的方法中指向实例对象,也可以使用this





IT学习助手 - qq:2676427015
3楼 · 2022-03-26 10:32

1、JS 没有类没有方法,只有对象和函数。

2、JS 加了 class 关键字之后,勉强弄出来一个假的类。

3、this 是连接对象和函数的桥梁。


相关问题推荐

  • 回答 4

    现在主流的是vue、react、angular

  • 回答 4

    javaScript学习是一个从难到容易再到难反复的规程,因为你在不同的阶段你研究的内容不一样了,对于刚开始去学习js,我们一定不能纠结于某一个点,要整体去看,等我们知道的多了,会的多了再去回头看就会很简单。...

  • 回答 8

    向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];var arry2=[];arry.map(((item, index)=> {arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))}))cons...

  • 回答 2

    我觉得getTopWindow() 应该是他自己写的函数 mask  应该是getTopWindow()函数中 return 出的一个什么玩意show()  jQuery的显示

  • 回答 9

    如图所示

  • 回答 12

    1、原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2、 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链...

  • 回答 6

    使用VS code对JS进行Debug,需要安装一个插件,这个插件是根据你所使用的浏览器来的,不同浏览器对应插件不同,以下是插件对应情况,下载完相应的插件以后还要下载一个live server在浏览器下查看你界面运行效果,记得在到设置里修改下live server的端口号,然...

  • 回答 8
    已采纳

    没有基础,是可以学Java的,在网上也能找到很多免费的视频、学习资料等资源,只不过想要光靠自己摸索学透Java并不容易,最好是找一个比较靠谱的有实训的培训机构。不过,我给你点建议:1.脑子里要有编程思维,2.学习态度要有,3.了解了基本概念后,从图形界面...

  • 回答 7

    假设文本框的id=text1js:document.getElementById(text1).value = 测试;//即可

  • 回答 2

    这两个事件都是在js原生开发时经常会用到的,比如需要对页面dom进行动态处理,这时就需要用到DOMContentLoaded和[removed]事件,大家都知道,就是在dom构建完毕后,才可以对dom元素进行操作,否则会获取不到相应的dom元素,但是DOMContentLoaded和[removed]还...

没有解决我的问题,去提问