您好,登錄后才能下訂單哦!
小編給大家分享一下微信小程序開發中var that =this怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
在微信小程序開發中,var that =this的聲明很常見,舉個例子,代碼如下:
示例代碼1
1 //index.js 2 Page({ 3 4 data: { 5 toastHidden: true, 6 }, 7 8 loadData: function () { 9 var that = this//這里聲明了that;將this存在that里面 10 wx.request({ 11 url: 'test.php', 12 data: {a: 'a', b: 'b'}, 13 header: { 14 'content-type': 'application/json' 15 }, 16 success(res) { 17 that.setData({ toastHidden: false }) //這里使用了that,這樣就可以獲取Page({})對象 18 }, 19 }) 20 } 21 22 })
在代碼中第9行聲明了var that =this;第17行使用了that。
如果不聲明var that =this,且that改成this,代碼如下!
示例代碼2
1 //index.js 2 Page({ 3 4 data: { 5 toastHidden: true, 6 }, 7 8 loadData: function () { 9 wx.request({ 10 url: 'test.php', 11 data: {a: 'a', b: 'b'}, 12 header: { 13 'content-type': 'application/json' 14 }, 15 success(res) { 16 this.setData({ toastHidden: false }) 17 }, 18 }) 19 } 20 21 })
此時運行代碼就會報以下錯誤!
從報錯中得知setData這個屬性讀不到,為何讀不到?這跟this關鍵字的作用域有關!
this作用域分析:
1.在Page({})里面,this關鍵字指代Page({})整個對象
2.因此可以通過this關鍵字訪問或者重新設置Page({})里data的變量
3.然而在loadData函數中使用了wx.request({})API這個方法導致在wx.request({})里沒辦法使用this來獲取Page({})對象
4.雖然在wx.request({})里沒法使用this獲取Page({})對象,但是可以在wx.request({})外面先把this存在某個變量中,所以就有了var that =this 這個聲明。此時that指代Page({})整個對象,這樣子就可以在wx.request({})里使用that訪問或者重新設置Page({})里data的變量
看完了這篇文章,相信你對“微信小程序開發中var that =this怎么用”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。