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