JavaScript 中this的用法

174 阅读1分钟

对于初学者来说this关键字真是让人头疼的的东西,这次指向全局,下次又指向函数等等,真的是非常的灵活!
this是JavaScript语言的一个关键字,它是函数体在运行时,内部自动生成的一个对象。
好了话不多说,直接说重点:

第一种情况:普通函数的调用

这种是普通的函数调用方法,属于全局调用,所以this会指向全局变量。 看下列的代码就可知,最后的结果是1。

var a = 1;
function test(){
console.log(this.a);
}
test();//  1
第二种情况:做为函数的对象方法调用

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

var a=2;
var o = {
a:1,
f: function (){
console.log(this.a)
}
};
o.f();// 1
第三种情况:作为构造函数调用

构造函数就是用通过一个函数可以生成一个新的函数,此时函数就会指向这个新的对象

var a= 2;
function test(){
   this.a = 1;
}
var test1= new test();
console.log(test1.a);// 1
第四种情况:apply/call 调用

apply和call方法是改变函数的调用对象,this就是指向它的第一个参数

var a=1 ;
function test(){
console.log(this.x)
}
var o={};
o.x=2;
o.t= test;
o.t.apply(o);// 2
o.t.call(o);// 2

当参数为空时就是默认指向全局对象

o.t.apply();// 1
o.t.call();// 1

结果变成了1,可知this的指向就是全局对象了。

这些都是我观看阮一峰老师博客所学来的,我觉得这对初学者确实很有用处,希望的对向我一样的菜鸟提供一些帮助。
(完)