javascript中的this
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