Js中的这是什么

介绍

这篇文章主要讲解了“Js中的这是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Js中的这是什么”吧!

<强>这是什么

理解这之前,先纠正一个观点,这既不指向函数自身,也不指函数的词法作用域。如果仅通过这的英文解释,太容易产生误导了。它实际是在函数被调用时才发生的绑定,也就是说这具体指向什么,取决于你是怎么调用的函数。也就是说谁调用的这个,这个就指向谁。

<强> 1。纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此本就代表全局对象。请看下面这段代码,它的运行结果是1 .

来看这段代码:

var=2;有趣的()函数{

}

控制台。日志(这。);

有趣();

此时的打印结果是2 .

因为有趣的()是直接调用的(独立函数调用),没有应用其他的绑定规则,这里进行了默认绑定,将全局对象绑定上,所以。一个就解析成了全局变量中的一种,即2。此时的这个相当于窗口。

调用函数实质是窗口调用测试方法,所以函数体内的这个指向的是窗口。

<强> 2。作为对象方法的调用

函数还可以作为某个对象的方法调用,这时这就指这个上级对象。

功能测试(){

console.log (this.x);}

var obj={};

obj。x=1,

obj。m=测试;

obj.m ();

此时打印结果为1;这相当于obj对象。

此时的测试函数被用作了对象对象的方法来调用,所以测试里的这个指向对象。

<强> 3。作为构造函数调用

所谓构造函数,就是通过这个函数,可以生成一个新对象。这时,这就指这个新对象。

功能测试(){

。x=1,

}

var obj=新的测试();

<强> 4。电话/申请改变这的指向

函数人(姓名、年龄){

this.name=名字;

。年龄=年龄

}

var=new人(“xu", 18);

var obj={}

Person.call (obj,“liu", 20)

通过在控制台打印我们可以看的出,这现在指的是obj对象,所以说叫可以改变这的指向。

调用与应用的不同在于传值时是以数组的方式:

Person.apply (obj, [“liu" 20])

apply()是函数的一个方法,作用是改变函数调用的对象。它的第一个参数就表示改变后的调用这个函数的对象,因此,这是这个指的的就是这第一个参数。

总结

1。通常在函数中这个指的向的是调用函数的哪个对象(谁调用指向谁)。

2。事件函数中的这通常指向的是事件前的对象。

3。构造函数中的,(使用新调用构造函数创建对象),通常指向的是新所创建出来的对象本身。

4。全局范围的这通常指向的是全局对象(浏览器中是窗口)。

感谢各位的阅读,以上就是“Js中的这是什么”的内容了,经过本文的学习后,相信大家对Js中的这是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

Js中的这是什么