看一個例子
$('#conten').click(function(){ //this是被點擊的#conten var that =this; $('.conten').each(function(){ //this是.conten循環中當前的對象 //that仍是剛才被點擊我的#conten }) })
this對象在程序中隨時會改變,而var that = this之后,that不會改變,仍然指向之前的this,這樣就不會找不到原來的對象
tab.prototype.init = function(){ for(var i=0,len =this.span.length;i<len;i++){ var that = this; that.span[i].index =i; that.span[i].onclick = function(){ that.show(this.index); } } this.show(1); }
這個例子中,如果將that.show(this.index) 改為 this.show(this.index),此時 this.show中this指向that.span[i],此時會因為找不到that.span[i]而報錯。而改成that.show(this,index),此時,that因為前面申明 var that =this,that指向外層。
理解尚不到位我再查查資料。。。。。。