this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 函数在不同的执行环境中this的值也跟着不同。 分一下四种
方法调用模式。
当函数作为对象的方法调用时,this指向该对象
1
2
3
4
5
6
7
8 1var num1=0;
2 var obj={};
3 obj.num1=1;
4 obj.func=function(){
5 return this.num1;
6 }
7 alert(obj.func());//1
8
普通的函数调用模式
当函数直接调用时,this指向全局对象window。
1
2
3
4
5
6 1var num1=0;
2 var func=function(){
3 return this.num1;
4 }
5 alert(func())//0
6
当函数内部的函数用普通调用方式调用时,this仍指向全局对象window。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 1var num1=0
2 var obj={};
3 obj.num1=1;
4 obj.func1=function(){
5 var num1=2;
6 var that=this;
7 var func2=function(){
8 alert(this.num1);//0
9 alert(that.num1);//1
10 alert(num1);//2
11 }
12 func2();
13 }
14 obj.func1();
15
构造器调用模式,即使用new关键词
当使用new方式调用函数时,this指向新创建的对象。
1
2
3
4
5
6 1function Person(name){
2 this.name=name;
3 }
4 var person=new Person("向晚");
5 alert(person.name)//向晚
6
apply(),call()调用模式
apply()接收两个参数,第一个是将被绑定到this的值,第二个是参数数组
1
2
3
4
5
6
7
8 1var num1=0;
2 var func1=function(){
3 alert(this.num1);
4 }
5 var obj={num1:1};
6 func1();//0
7 func1.apply(obj);//1
8