看到一篇文章说: 正确掌握了 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();
本文介绍了JavaScript中的this关键字的多种用途及绑定规则。包括作为对象方法、普通函数、构造函数调用,以及使用apply或call调用时this的不同指向。

被折叠的 条评论
为什么被折叠?



