js中this关键字如何应用?
发布网友
发布时间:2022-04-25 11:52
我来回答
共3个回答
热心网友
时间:2022-04-07 11:08
网上说起来js中的this,各种用法,但归根结底只有一点:this表示调用该函数的那个对象!换句话说,this所代表的,就是函数名前面的那个点之前的部分。当然,有些地方找不到点,但总是有一个对象在调用这个函数,而函数中的this,就表示这个对象。
getFullName是一个函数,问题(1)中的调用者是person.prop,所以getFullName函数中this在执行person.prop.getFullName()时就指向person.prop,this.fullname就是person.prop.fullname,就是Jane。
而var test = person.prop.getFullName,实际上就是把这个函数单独提出来,再给它起个名字。此时的test与person.prop没有任何关系,所以调用函数test,就不用考虑person.prop。
在浏览器中执行js,有一个潜规则,就是全局变量默认都是内置对象window的属性。所以,var test在全局作用域中,相当于window.test,就好像前面的var fullname = "Anna",就相当于window.fullname,还有person也是一个道理。所以,这里调用test(),等价于window.test(),这样就可以看出,test函数中的this,指向的是window,而window.fullname,它的值是Anna。
关于第三个问题,估计你是被var test = person.prop.getFullName所迷惑。实际上,这里的getFullName是一个函数,但js中函数也跟字符串、数字一样,可以当做变量赋值,所以这是一个赋值操作,函数后面没有加括号。而一旦加括号,就变成了函数调用,意义也就不一样了。不加括号,test和person.prop.getFullName是同一个函数;加了括号,test就变成了person.prop.getFullName执行的返回值了。
热心网友
时间:2022-04-07 12:26
js和java、C#之类的语言不同,服务器的编程语言是面向对象的结构,js是基于对象,也就是说最高层的对象是window对象,如果说直接定义了一个function 那就相当于在window对象下面扩展了一个方法或属性 问题二也就是说你定义了一个 test的变量,同时又指向了 getFullname的方法,那么在调用的时候实际就是 window.test() 在window对象下有个fullname的属性,这个时候this的作用域是 window,所以就找到了window下面的属性 问题3 简单的来说,谁调用的方法 this就是谁,this属性是隐世的传递,如果想要改变this的 作用域 则使用 方法名.call(第一个参数就是this)
热心网友
时间:2022-04-07 14:01
你说的没错,‘this’就是指向调用其方法的对象,所以person.prop.getFullName()是person.prop调用了getFullName(),获得的是person.prop的fullname,也就是Jane了
var test= person.prop.getFullName 注意这句是没有括号的,person.prop.getFullName是一个function,所以test也会是一个function类型,而实现内容是和person.prop.getFullName一样的,但没有任何调用关系,也就是说,这句话等同于:
var test= function() {
return this.fullname;
}
你这么看的话,如果用了test(); 就等于是调用了同级的fullname,就是Anna了
不是很懂你这一问的意思,不过不加()的话,只是一个function类型,他代表了一段代码的实现,但不会去执行这段代码,加了()就是调用执行这个方法
js中this是什么意思?
js中this指的是什么?在JavaScript中,this是一个关键字,可以认为是一个指向当前作用域中对象或函数的指针。在不同的上下文环境中,this指向的对象是不同的,可以是全局对象、函数的局部对象或者是被调用的对象本身。它的值是在函数被调用时确定的,而不是在函数定义时确定的。this的作用在于发挥上下文...
js下的this有哪些用法
function test(){ this.x = 1;} var o = new test();alert(x); //2 运行结果为2,表明全局变量x的值根本没变。情况四 apply调用 apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。var x ...
js中this是什么意思?
在JavaScript中,this关键字是一个非常重要的概念。它代表函数执行时自动生成的一个内部对象,这个对象可以在函数内部被引用和使用。在理解this之前,需要先明白JavaScript的执行上下文模型。在四种不同的情况下,this的行为会有不同的结果:第一,纯粹的函数调用。这时,this将指向全局对象,也就是浏览器中...
js中的this是什么意思?
如果函数使用“new”关键字调用,this指向新创建的实例,如果使用“call”或“apply”方法调用函数,this将指向第一个参数所表示的对象,如果使用箭头函数,则常规的 this 指向会被替换为声明箭头函数时所在的上下文的 this 值,这意味着箭头函数中的 this 始终指向其定义时的上下文。在JavaScript中,this的...
js当中this什么用法
在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余。对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏繁杂。而我的理解是:首先分析this所在...
一文搞懂JavaScript中的this绑定规则
setTimeout内部绑定的this是window,btn的this指向按钮,forEach方法指向Window三.new绑定:JavaScript中的函数也可以当作一个构造函数来使用,也就是通过new关键字我们先来回忆一下new关键字做了什么:创建(构造)一个全新的对象,这个新对象执行[[prototype]]连接,将这个新对象绑定在this上,没有显示返回其他对象时,即返回...
一次搞懂JS中的this
方法调用:`this` 引用拥有该方法的对象。构造函数调用:使用 `new` 关键字创建对象时,`this` 指向新生成的对象。通过实现 `new` 原理,我们可以确保构造函数始终正确调用。当构造函数不通过 `new` 调用时,`this` 指向 `undefined`,而不是对象。对于 `new` 的原理,可以使用 `apply` 方法明确...
史上最全的 js中this详解
前言 本文旨在详尽解析JavaScript中的`this`关键字,解决开发者在使用非箭头函数时对`this`创建与判断的疑惑。虽然许多开发者能够熟练使用JavaScript内置函数与对象,封装出优秀的函数,但在面对非箭头函数时,`this`的创建与判断往往显得模糊不清。通过整理资料与个人见解,本文将深入探讨`this`的创建与判断...
全面理解JS中的this-前端园地
使用apply或call可以改变函数内部的this指向,如`foo.call(obj2);`时,this将变为obj2。构造函数new关键字会将this绑定到新创建的实例。在DOM事件处理函数中,this通常绑定到触发事件的DOM对象。而定时器中的this默认指向window,但可以通过闭包或bind方法绑定到特定对象。箭头函数的this行为与普通函数不同...
js中this代表什么意思?
this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分四种情况:情况一:纯粹的函数调用 :这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。情况二:作为对象方法的调用 :函数还可以作为某个对象的方法调用,这时this就指这个上级对象...