ES6中的get/set
阿新 • • 發佈:2022-05-12
文章目錄
一、為什麼需要使用get/set方法?
class
中有幾個屬性修飾符:
public
可以被其他所有類訪問protected
自身、子類可以訪問private
只能被自身訪問
一個屬性如果設定為public
型別是非常危險的,會被任意修改。用get/set
方法來控制變數,防止他人的惡意修改。
二、set/get的使用方式
例如:
在物件中使用
let obj = {
arr:[1,2,3,4],
get latest( ) {
if(!this.arr.length) {
return undefined;
} else {
return this.arr[this.arr.length-1]
}
},
set setFirst(val) {
if(typeof val ==='number') {
this.arr[0] = val;
}
}
}
從結果可以看出latest
在初始化的時候就已經運行了,latest
obj
的一個屬性來計算後顯示。類似,在
class
中也有類似的用法。
三、set/get的一個使用場景:在每次登入的時候檢測是否已經登入
class login {
//token儲存的鍵值
static TOKEN_KEY = 'geqwrgfboiadsad';
// 在每次使用這個 class security 的時候 會呼叫 hasLogin() 來判斷是否登陸
get hasLogin() {
return this.currentUser !== null;
}
async signup(params) {
return await http.post(API.signup(), params, {
noToken: true
});
//!!!step1註冊只返回邀請碼,新增登陸後需再localStorage儲存使用者資訊
}
}