vue中關(guān)于computed的this指向問題
關(guān)于computed的this指向
在寫vue項目時,用到了computed計算屬性,遇到了使用箭頭函數(shù)出現(xiàn)this指向問題,這里記錄下
箭頭函數(shù)中的this
- 箭頭函數(shù)內(nèi)部的this是詞法作用域,由上下文確定
- 函數(shù)體內(nèi)的this對象,就是定義時所在的對象,而不是使用時所在的對象
vue中的computed
list: () => {
console.log(this)
}
- 不使用箭頭函數(shù)
allFigure: function() {
console.log(this)
},
- 使用get()
allFigure: {
get() {
console.log(this);
}
}
自己的理解
- 在computed中使用箭頭函數(shù)的話,會導致this指向的不是整個的vueComponent
- 此時使用allFigure: function() {}的形式就可以解決,this指向了vueComponent
- 或者使用對象的形式,用set()、get()方法也不會出現(xiàn)問題
vue實例內(nèi)部方法的this指向問題
如果是vue實例本身的屬性和方法,那么this指向就是vue實例本身,比如methods對象,computed對象,watch對象里的方法,要用方法名(){}寫,就代表this指向是vue實例,如果使用()=>{}箭頭函數(shù)的方式定義方法,則this指向window,因為箭頭函數(shù)中的this指向的是外部函數(shù)的this指向,普通函數(shù)的this指向的是它的調(diào)用者,而vue中的methods和computed和watch和各種回調(diào)鉤子,因為他們是vue本身的方法所以只要他們使用普通函數(shù)定義this當然指向他們的調(diào)用者即this
除了這些一級方法,二級方法啥的最好都用箭頭函數(shù),因為箭頭函數(shù)this指向外部函數(shù)的this,這些二級函數(shù)外部正好是一級函數(shù),一級函數(shù)的this正好的vue,所以正好nice.
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
uniapp開發(fā)打包成H5部署到服務(wù)器的詳細步驟
前端使用uniapp開發(fā)項目完成后,需要將頁面打包,生成H5的靜態(tài)文件,部署在服務(wù)器上這樣通過服務(wù)器鏈接地址,直接可以在手機上點開來訪問,下面小編給大家講解uniapp開發(fā)打包成H5部署到服務(wù)器的步驟,感興趣的朋友一起看看吧2022-11-11
antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作
這篇文章主要介紹了antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Vue Router4與Router3路由配置與區(qū)別說明
這篇文章主要介紹了Vue Router4與Router3路由配置與區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-12-12

