JavaScript 4.2 函数高级-this

xiaoxiao2021-02-27  235

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的属性x o.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=50 alert(myFather.age); //50 function test(){ this.x = 1; } var o = new test(); //结果:创建o.x=1 alert(o.x); // 1

 

情况四 :apply调用

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

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

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

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

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

 

转载请注明原文地址: https://www.6miu.com/read-9150.html

最新回复(0)