什么是this指向?
this指向就是函数包含它被调用时所属的对象,就是他被作为方法被调用时所指的对象。
this指向取决与你调用的函数,也就是谁调用的this,this就指向谁;你调用的我,我就指向你。
记住:this只能在函数里面用。谁调用的函数,this就指向谁。
具体来看一下代码:
function fnn(){
console.log(this);//整个window对象
}
fnn()//函数调用
这个this呢他被函数包含着,然后函数被调用,这个函数被调用是在全局被调用了,所以这个this呢它指向整个windows对象;也就相当于window.fnn();window调用的这个函数,这个this就指向整个window对象
function fnn(){
var agg='小张';
console.log(this.agg);//undefined
}
fnn()//函数调用
为啥会是undefined呢?
因为fnn函数是在全局中被window对象所调用,agg是定义在函数里,
在全局里并没有声明这个变量,访问不到,所以是undefined,
那这样就ok了:
var agg='小张';
function fnn(){
var agg='小李';
console.log(this.agg);//小张
}
fnn()//函数调用
再举个例子哈:
var fn = {
a: 1,
b: {
a: 2,
fn: function () {
console.log(this.a) // 2
}
}
}
fn.b.fn()//调用里面的函数
说明:作为对象来调用,this指向它的上一级;
总结下:
this在什么情况下可以用?
1,函数调用,就是它可以访问到全局window对象
2,作为对象方法调用,在这this就指向它的上级对象
3,作为构造函数调用