this是Javascript語言的一個關鍵字。 它表明函數運行時,自動生成的一個內部對象,只能在函數內部使用。 函數在不一樣的執行環境中this的值也跟着不一樣。 分一下四種javascript
當函數做爲對象的方法調用時,this指向該對象java
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。app
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方式調用函數時,this指向新建立的對象。函數
function Person(name){ this.name=name; } var person=new Person("向晚"); alert(person.name)//向晚
apply()接收兩個參數,第一個是將被綁定到this的值,第二個是參數數組this
var num1=0; var func1=function(){ alert(this.num1); } var obj={num1:1}; func1();//0 func1.apply(obj);//1