1.最常见的情况下,函数中的this是指向顶层对象window的。
列如这个下面这段代码:
var a=2;
function showThis()
{
var a=1;
console.log(this.a);
}
showThis();
this指向了window对象结果输出的应该是2.
2.如果this所在的函数是对象的属性,那么默认情况下this会指向该对象
如下面这段示例代码:
var a=2;
var obj={
a:1,
fun:function(){
console.log(this.a);
}
};
obj.fun();
this指向了Object最终输出的结果应该是1.
3.JavaScript函数call()或Apply()强制this指向第一个参数对象
如下面这一小段示例代码:
var a=2;
var obj={
a:1,
fun:function(){
console.log(this.a);
}
};
var obj2={
a:3
};
obj.fun.call(obj2);
this指向Object最终程序的输出结果为3.是obj2的a属性的值。
4 javascript通过new关键字创建的对象,函数中的this会在创建成功后指向被创建的对象
如下面的示例代码:
var a=2;
function fun(a){
this.a=a;
}
var obj = new fun(3);
console.log(obj.a);
this指向fun在函数执行完之后,fun会赋值给obj,所以最终this指向obj,输出结果为3.
this绑定的优先级按照4,3,2,1的顺序,new的优先级最高。
网友评论