在js編碼過程當中,常常會使用如上的語句來規避拿不到變量的問題。css
好比:html
queryData:function () { var that=this; var param={}; for(var key in this.condition){ if(this.condition[key]){ param[key]=this.condition[key]; } } AJAX.GET("/api/adream/flow/queryRoomsBySystem",param,function (data){ if(data.success && data.systemList != null){ var queryLen = data.systemList.length; if(queryLen > 0){ for (var queryIndex=0; queryIndex<queryLen; queryIndex++){ debugger; that.roomList.push(data.systemList[queryIndex]); } } } });
注意標黃的部分,若是用this.roomList,將會發現roomList爲空對象,是由於this指向的是AJAX內部的對象,this會隨着代碼進入的層深來自動改變指向的對象,因此這裏在用this.roomList,那確實拿不到外層的對象。api
而使用var that = this以後,that中的對象將是this剛進入queryData方法時候的副本,因此會拿到這個對象。this