您好,登錄后才能下訂單哦!
微信小程序開發中var that=this的用法是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在微信小程序開發中,var that =this的聲明很常見。舉個例子,代碼如下!
示例代碼1
//index.js Page({ data: { toastHidden: true, }, loadData: function () { var that = this//這里聲明了that;將this存在that里面 wx.request({ url: 'test.php', data: {a: 'a', b: 'b'}, header: { 'content-type': 'application/json' }, success(res) { that.setData({ toastHidden: false }) //這里使用了that,這樣就可以獲取Page({})對象 }, }) } })
在代碼中第9行聲明了var that =this;第17行使用了that。
如果不聲明var that =this,且that改成this,代碼如下!
示例代碼2
//index.js Page({ data: { toastHidden: true, }, loadData: function () { wx.request({ url: 'test.php', data: {a: 'a', b: 'b'}, header: { 'content-type': 'application/json' }, success(res) { this.setData({ toastHidden: false }) }, }) } })
此時運行代碼就會報以下錯誤!
從報錯中得知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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。