JavaScript 4.2 函数高级-this

来源:互联网 发布:js window.scrolltop 编辑:程序博客网 时间:2024/06/02 03:27

JavaScript 4.2 函数高级-this

 

在函数内部有2个特殊的对象:argumentsthis

this对象是函数执行的环境对象,或者说,是调用函数的那个对象。

 

情况一:纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global

var x = 0;function test(){  alert(this.x);}test();  //调用函数test()的是全局对象window,所以this.x = window.x,结果0

 

情况二:作为对象方法的调用

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

var x = 0;function test(){  alert(this.x);}var o = new Object();o.x = 1;     //新增对象o的属性xo.m = test;  //新增对象o的方法m()o.m();      //调用对象o的方法m(),所以this.x = o.x,结果:1

 

情况三 作为构造函数调用

所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

function person(name,age)  {    this.name=name;    this.age=age;    }  var myFather = new person("John",50);  //结果:创建myFather.name="John",myFather.age=50alert(myFather.age);  //50 function test(){  this.x = 1;}var o = new test();  //结果:创建o.x=1alert(o.x);    // 1

 

情况四 :apply调用

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

var x = 0;function test(){alert(this.x);}var o={  x : 1,  m : test};o.m.apply(); //0
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

如果把最后一行代码修改为

o.m.apply(o); //1

运行结果就变成了1,证明了这时this代表的是对象o

 

0 0
原创粉丝点击