每一个不曾起舞的日子都是对生命的辜负。
在javascript中this是一个关键词,在javascript中很常用,但是对于初学者却是一件很头痛的存在,时常让人搞不懂this指向的是什么。纵然this的还以丰富多彩带式归根到底它就是函数运行时,自动生成的一个内部对象,并且只能在函数内部使用。并且随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
纯粹的函数调用,这个是函数的组常见的用法,抢看下面代码
function flower(){r
this.fr = "玫瑰";
alert(this.f)
}
flower();
运行的结果为:玫瑰。
这个时候的this指向的是全局,也就是window。
为了证明上述的结论大家可以在函数内部用console.log(this)看一下this的指向。也可以变换下代码
var f='玫瑰'
function flower(){
alert(this.f)
}
flower();
运行结果是一样的。
大家都知道,函数可以作为某个对象的方法调用。这时 的this就指的是这个上级对象。
function flower(){
alert(this.f)
}
var o = {};
o.f='玫瑰';
o.m=flower;
o.m()
运行结果就为:玫瑰。
所谓的构造函数,就是通过这个函数生成的一个新对象(object).这时,this就指的这个新对象。
function flower(){
this.f='玫瑰';
}
var o = new flower();
alert(o.f)
这时运行的结果依然是玫瑰。
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
var f='玫瑰';
function flower(){
alert(this.f)
}
var o = {};
o.x = '百合';
o.m = flower;
o.m.apply();
运行结果为:玫瑰。
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。如果把最后一行代码修改为
o.m.qpply(o);
运行结果为:百合。证明了这时的this指的是对象o.