var that = this 小坑記

在js編碼過程中,經常會使用如上的語句來規避拿不到變量的問題。

比如:

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,那確實拿不到外層的對象。

而使用var that = this之後,that中的對象將是this剛進入queryData方法時候的副本,所以會拿到這個對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章