看到一篇文章说: 正确掌握了 JavaScript 中的 this 关键字,才算迈入了 JavaScript 这门语言的门槛。
今天的博客 就写一写 对this的初步认识
由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。JavaScript 中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用
在函数调用模式中 this指向Window
函数也可以直接被调用,此时 this 绑定到全局对象。在浏览器中,window 就是该全局对象。
function fn() { console.log(this) } fn()
在调用的模式的时候,this指向方法所对应的对象
方法在 JavaScript 中,函数也是对象,因此函数可以作为一个对象的属性,此时该函数被称为该对象的方法,
在使用这种调用方式时,this 被自然绑定到该对象。
function test(){ alert(this.M); } var o = {}; o.M= 1; o.m = test; o.m(); // 1
在构造函数模式的时候,this指向新生成的实例
所谓构造函数就是通过这个函数生成新的对象(object)this指向这个对象
function test(){ this.x = 1; } var o = new test(); alert(o.x); // 1
this 在apply/call调用模式的时候,this指向其第一个参数
pply()是函数对象的一个方法,它的作用是改变函数的调用对象,
它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
var x = 0; function test(){ alert(this.x); } var o={}; o.x = 1; o.m = test; o.m.apply();