1. 程式人生 > 其它 >ES6中的get/set

ES6中的get/set

文章目錄

一、為什麼需要使用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儲存使用者資訊 } }