问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS中this关键字的解释

发布网友 发布时间:2022-04-21 01:07

我来回答

1个回答

热心网友 时间:2023-10-30 09:25

this关键字
每一个行为发生的时候,肯定会有一个发生这个行为的主体。比如说吃饭这个方法,它是由上帝来定义的,世界上所有的人来执行。吃饭这个行为发生的时候,主体就是在吃饭的这个人,也就是要有人执行吃饭这个行为。用中文来表达就是张三吃饭或、李四吃饭,用编程语言来表达则是张三.吃饭()、李四.吃饭()。有时候我们需要在一个行为(方法)里,能确定执行这个行为的人是谁,或者说我们需要知道是那个对象执行了这个方法,更具体的说我要能知道是谁在吃饭。
在中文里有第一人称“我”,这个我放在吃饭这个行为了,就表示吃饭的那个人。张三吃饭,则张三吃饭行为中的那个我,就是张三,李四吃饭,则这个吃饭行为里的我就是李四。
在编程语言里,同样也有“我”的概念,那就是this关键字。每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义的来决定的,而是由谁来执行的决定的。这是判断this关键表示什么的重要原则。比如: 张三.吃饭();//这个吃饭里的this就是张三这个对象 也就是判断点(.)前面的对象是谁,那这个this就是谁。 但有的方法是直接执行的,前面没有点,就更没有执行的对象了,那this关键是谁呢?像alert方法,直接执行的,那alert方法里的this是谁呢?凡是可以象alert这样直接运行的方法,都是全局方法(全局方法叫函数),全局方法的执行,都相当于前面省略掉了window.,也就是说alert()相当于window.alert(),那这样直接运行的方法里的this关键字,肯定就是window了。
² 再强调一次:方法里的this表示的是那个对象,是由谁来执行决定的。和在那儿定义的没有关系。 补充:this表示的对象,是这个方法活动的“上下文”。“上下文”是那些计算机前辈在翻译这个词的时候,脑子抽了一下,就把context翻译成这么一个中国人看不懂的新词汇了。所谓的“上下文”, 也就是表示当前的这些代码的活动范围,当前的活动(代码的执行)在那个对象上发生的意思。吃饭这个活动,是在张三这个对象上发生的,则张三是吃饭的上下文。在body里去查找所有的div元素,则body是这个查找活动的上下文。那这个this,就是这个方法运行的活动范围了。 方法里this当前这个方法运行的上下文,但上下文不仅限于this(就是个体与整体的区别)。 第二种风格的this关键字解释 this关键字 每一个方法或函数都会有一个this对象,this对象是方法(或函数)在执行时的那个环境,也可以说是这个函数在那个作用域下运行的。 说的更通俗一点:this就相当于咱们平时说话时候说的“我”,“我家”的概念。就是说当一个方法在运行的时候,它是属于谁的。它在运行的时候它的家是谁家。 this的概念比较抽象,是讲课的时候的难点也是重点。 关于this的具体表示那个对象,和函数的运行方式(或调用方式)有关。在JavaScript中一共有四种调用模式:方法调用模式(对象属性模式)、函数调用模式(就是普通的函数执行)、构造调用模式(应该叫实例上的方法模式更好)和apply调用模式。
一、当它为一个对象上的方法的时候,this是当前这个对象。 方法调用模式(或称:对象属性模式) 先了解一个概念:方法和函数的区别。方法和函数本质一样,形式不同而已。看下例: function fn(){alert(this)}这样就是定义了一个函数,当:fn()的时候,叫这个函数运行。同样是上面这个fn函数,如果把它赋值给一个对象的属性,就成了方法了,看下面的例子。 var obj=new Object();//先定义一个对象obj obj.objFn=fn;那现在的obj.objFn就是方法了,但其实objFn和fn指向的是同一个内存地址。但fn是直接定义的,就是函数,而objFn是obj这个对象上的一个属性,则objFn就是方法了。方法和函数本质上是一样的,只是在不同的情况下的叫法不同。 但当fn运行的时候,弹出的是window(任何函数被调用,this都表示window);而objFn运行的时候,弹出的是object,因为当它做为一个方法运行的时候,this关键字表示的是objFn这个属性所属的这个对象obj。也就是说,在这种情况下,this表示obj。 再啰嗦一遍:当函数成为一个对象的属性的值的时候,这个函数里的this指向当前这个对象(这时候函数就变成了方法) 再啰嗦第三遍:当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。方法可以使用this去访问对象,所以它能从对象中取值或修改对象。this到对象的绑定发生在调用的时候。这个“超级”迟绑定使得函数可以对this高度复用。通过this可取得它们所属对象的上下文的方法称为公共方法。
二、函数调用模式当函数并非一个对象的属性时,那么它被当做一个函数来调用。此模式下this绑定到全局对象。通过在对象内将this赋值给that,可以使函数模式下调用that来访问指定对象。 (就是上面解释的函数方式)三、类的实例上的方法中的this指向当前的实例例如: function Person(){ } Person.prototype.cry=function (){alert(this)} var rose=new Person(); rose.cry();//现在这个cry就被称做方法,这个方法里的this就表示rose这个实例。 详细的讲解,请见《面向对象和设计模式》的课堂讲解和视频 ④使用call和apply方法强制改变this关键字(附在面向对象一章的讲解里) 测试题: 题目一:var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()()); //The Window 解析:object.getNameFunc后面跟了两对括号。先运行object.getNameFunc(),这个方法运行后返回了一个函数,就是这个方法里面定义的那个匿名函数,然后再让这个匿名函数运行。 可以分解成以下步骤: var fn= object.getNameFunc();//object.getNameFunc这个方法里的this是表示object这个对象,但它返回的是一个函数,返回的这个函数里的这个this则表示window了 fn();//当返回的这个函数运行的时候,this表示是window这个对象 和上一题目类似的题: function a(){ alert(this); } var arr = [1,2,3]; arr.f = a; arr.f();//会输出什么 解析:把a函数赋给arr的属性f,则f就成为arr这个对象上的方法了,它运行的时候就表示arr这个数组对象。 如果直接这样:a(); 则这时候的this表示的是window这个对象
JS中this关键字的解释

第二种风格的this关键字解释 this关键字 每一个方法或函数都会有一个this对象,this对象是方法(或函数)在执行时的那个环境,也可以说是这个函数在那个作用域下运行的。 说的更通俗一点:this就相当于咱们平时说话时候说的“我”,“我家”的概念。就是说当一个方法在运行的时候,它是属于谁的。它...

js中的this是什么意思?

在JavaScript中,this代表着当前正在执行的函数或方法的上下文。它可以是全局对象(在浏览器中为window),也可以是对象或函数本身。当函数被调用时,this指向调用该函数的对象或上下文。在不同情况下,this的指向会发生变化。例如,在对象中调用函数时,this指向该对象,而在全局作用域中调用函数时,this指...

js中this是什么意思?

js中this指的是什么?在JavaScript中,this是一个关键字,可以认为是一个指向当前作用域中对象或函数的指针。在不同的上下文环境中,this指向的对象是不同的,可以是全局对象、函数的局部对象或者是被调用的对象本身。它的值是在函数被调用时确定的,而不是在函数定义时确定的。this的作用在于发挥上下文...

js中this代表什么意思?

this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分四种情况:情况一:纯粹的函数调用 :这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。情况二:作为对象方法的调用 :函数还可以作为某个对象的方法调用,这时this就指这个上级对象...

javascript中的this到底指什么?

JavaScript:this是什么?定义:this是包含它的函数作为方法被调用时所属的对象。说明:这句话有点咬嘴,但一个多余的字也没有,定义非常准确,我们可以分3部分来理解它!1、包含它的函数。2、作为方法被调用时。3、所属的对象。看例子:function to_green(){ this.style.color="green";} to_green...

js中this代表什么意思?

JavaScript 中的 this 一直是容易让人误用的,尤其对于熟悉 Java 的程序员来说,因为 JavaScript 中的 this 与 Java 中的 this 有很大不同。在一个 function 的执行过程中,如果变量的前面加上了 this 作为前缀的话,如this.myVal,对此变量的求值就从 this 所表示的对象开始。this 的值取决于 ...

JavaScript中的this到底是什么(一)_javascript技巧

在这些语言里,this含义非常明确,就是指向当前的对象实例,我们用起来也是相当的放心。然而,到了JavaScript这个动态语言里,this的写法没变,但是其含义却大大地不同了,下面用实例说明,使用浏览器为Firefox14.0.1.首先,Hello World o(^_^)o本人从刚开始自学javascript这门灵活的编程语言到现在,也有...

帮忙解释js 中的this.value

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。value就是这函数对象的值

this和arguments的意思

this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象。但是在javascript中,由于javascript的动态性(解释执行,当然也有简单的预编译过程),this的指向在运行时才确定。这个特性在给我们带来迷惑的同时也带来了编程上的自由和灵活,结合apply(call)方法,可以使JS变得...

js面试常见的问题

1.如何理解 JS 中的`this`关键字?JS 初学者总是对 this 关键字感到困惑,因为与其他现代编程语言相比,JS 中的这this关键字有点棘手。 “this” 一般是表示当前所在的对象,但是事情并没有像它应该的那样发生。JS中的this关键字由函数的调用者决定,谁调用就this就指向哪个。如果找不到调用者,...

java中this关键字的用法 this关键字的含义 javathis关键字详解 简述this关键字的用法 关键字this和super this关键字用法 this关键字java final关键字 什么是关键字
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
味极鲜酱油简介 洗牙之前用的漱口水能喝吗,漱口水能治牙结石吗 熟的绿豆粉,可以用冷水冲泡吗 最不听话的人是谁??? 2021最火生日短句2021生日快乐经典短句 刚五行属什么 体内有严重的湿热, 薏米红豆各该吃多少斤 梵蜜琳贵妇膏是面霜还是素颜霜 贵妇膏使用后用气垫吗 端午节吃粽子发朋友圈的句子 端午节粽子发朋友圈文案端午节文案 javascript中各个地方的this指什么 鲁刚的《老厂》 歌词 javascript里的this用法指正 js中this代表什么意思? 理解Javascript中this是什么1 JAVAscript里面this的用法谁能举个例子啊 Javascript中“this” 的作用? javascript自定义对象中this的用法 javascript中this的意思 如何更好的理解js中的this,分享2段有意思的代 js当中this什么用法 如何理解 JavaScript 中的 this 关键字 javascript中的this到底指什么? JavaScript脚本中的this用法详细诠释? 怎么把金山毒霸卸载了 我删除也删除不了啊 金山毒霸企业版5.2卸载需要密码,如何才能卸载? 怎样完全卸载金山毒霸?卸载不了金山毒镖? 金山毒霸如何卸载 怎样才能完全的卸载金山毒霸 金山毒霸怎么卸载 金山毒霸卸载的方法 JavaScript 函数作用域 this javascript什么意思 如何排查C1下的网络环路? 防狼喷雾能过机场安检吗? 上飞机出国 可以带防狼喷雾吗 你好,防狼喷雾真的能带上飞机吗? 什么东西可以作防身利器又可以带上飞机? 防狼喷雾剂 能带上飞机吗? 老师,您好,我有几个问题想请教您 防狼喷雾60毫升,坐飞机可以放在行李箱里托运吗 防狼喷雾可以上飞机吗? 有什么防身用品可以带上飞机? 防狼报警器不能带上飞机么 要去欧洲旅游了 能将防狼报警器带出国吗 能过安检吗 在机场带了防狼喷雾,被罚款1000这是为什么 防狼喷雾管用吗? 防狼手电筒电击棒电棒可以上飞机吗? 防身器材是不能带上飞机吗? 防狼报警器能飞机托运嘛 飞机上不让带什么东西?