JS中this用法简单学习

引用网址苑一峰的网络日志
this是JS中的一个关键字,在函数运行时,在函数内部会自动生成一个this对象,只能在函数体内部使用
在函数的不同场合,this有不同的值。总的来说,this就是函数运行时所在的环境对象。

函数调用

这是函数最常用的情况,属于全局调用,因此this就代表全局对象。

var x=1;
function test(){
console.log(this.x);
}
test();//输出1

作为对象的方法调用

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

function test(){
  console.log(this.x);
}
var obj={};
obj.x=1;
obj.m=test;
obj.m();//输出1

作为构造函数调用

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

function test(){
  this.x=1;
}
var obj=new test();
obj.x;//输出1

比较

var x=2;
function test(){
  this.x=1;
}
var obj=new test();
x;//x的值没有变化,输出2

apply调用

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

var x=0;
function test(){
  console.log(this.x);
}
var obj={};
obj.x=1;
obj.m=test;
obj.m.apply();  //输出0

apply()参数为空的时候,默认调用全局对象。因此上述代码运行结果为0,证明this是全局对象。如果把最后一行代码修改为

obj.m.apply(obj);//输出1

最后结果变成了1,证明this代表的对象obj

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。