Js中的this是什么-创新互联

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

网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为混凝土搅拌罐车等企业提供专业服务。

this 是什么

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

1.纯粹的函数调用

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

来看这段代码:

var a = 2; function fun() {

}

console.log( this.a );

fun();

此时的打印结果是2。

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

调用函数实质是window调用test方法,所以函数体内的this指向的是window。

2.作为对象方法的调用

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

function test() {

console.log(this.x);

}

var obj = {};

obj.x = 1;

obj.m = test;

obj.m();

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

此时的test函数被用作了object对象的方法来调用,所以test里的this指向object。

3.作为构造函数调用

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

function test() {

this.x = 1;

}

var obj = new test();

4.call/apply 改变this的指向

function Person(name,age){

this.name = name;

this.age = age

}

var person=new Person("xu",18);

var obj = {}

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

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

call与apply的不同在于传值时是以数组的方式:

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

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

总结

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

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

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

4. 全局范围的this通常指向的是全局对象(浏览器中是window)。

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


当前名称:Js中的this是什么-创新互联
标题网址:http://pwwzsj.com/article/ejgci.html