this是JavaScript语言中的一个关键字。
它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。
总的来说,this就是函数运行时所在的环境对象。 函数不同的使用场景,this指向也会有所不同。
以下是我学习到的几种不同场景下this指向的不同
因为show函数,是全局函数,show函数运行时,this的环境对象是window,但是在严格模式下,this是undefined。
将show函数赋值给obj的m,show函数运行时,this的环境对象是obj。
所谓的构造函数,就是通过这个函数,生成一个新的对象。此时,this指向的是新的对象。 x的运行结果为2,表面全局变量x的值没有变。
这些工具函数作用是改变函数的this指向。它的第一个参数就是改变后的调用这个函数的对象。因此,这里的this指的是第一个参数。
var x = 0; function show() { console.log(this.x); } var obj = {}; obj.x = 1; obj.m = show; obj.m.show.apply() // 0apply()的参数为空时,默认调用全局对象(window),因此最后一行代码的运行结果为0。
总结一句话,this用于访问当前方法所属的对象。
本文的内容,学习自阮一峰的个人博客,智能社的blue老师的公开课视频。
