日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

90%的人封裝Storage時忽略了一個點!你們知道封裝的意義是啥嗎?

來源: 責編: 時間:2024-01-22 08:44:09 244觀看
導讀二次封裝 Storage?關于 Storage 的封裝問題,其實都是老生常談了,很多人都會在項目中去二次封裝 Storage,為了讓開發者能更加方便地去使用 localStore、sessionStorage。就比如下方,應該是很多人封裝的案例,就是封裝簡單的

二次封裝 Storage?

關于 Storage 的封裝問題,其實都是老生常談了,很多人都會在項目中去二次封裝 Storage,為了讓開發者能更加方便地去使用 localStore、sessionStorage。就比如下方,應該是很多人封裝的案例,就是封裝簡單的 讀取、寫入,或者有 刪除、清空:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

我們為什么封裝?

要不我們回過頭來想一下,我們為什么要封裝?其實封裝無非就是為了兩個目的:yw328資訊網——每日最新資訊28at.com

  • 更好地統一維護
  • 使用者更方便、更無腦地使用

但是我覺得在一個大項目中以及緊急的開發進度中,使用者更方便、更無腦地使用才是封裝的第一目的,所以想想剛剛的 LocalStorage 的封裝,真的能讓使用者更方便、更無腦地使用嗎?yw328資訊網——每日最新資訊28at.com

我就舉個例子吧,我想存進去一個對象,我這么去存,可以嗎?yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

顯然是不行的,存進去的對象會被轉成字符串 [object Object]:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

所以我必須這么去存和取值,利用 JSON.parse、JSON.stringify 去轉:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

只有這么去做才能達到我的目的:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

但是這樣不覺得很麻煩嗎?使用者更方便、更無腦地使用是封裝的第一目的,顯然這樣只會讓使用者徒增煩惱!!!yw328資訊網——每日最新資訊28at.com

有的人就說了,可以把 JSON.parse、JSON.stringify 寫在 useLocalStorage 中,但是這個方案只是針對 Object 而已,但是數據類型其實有多種:number、string、object、set、map、date 等等,你直接寫在里面,不太合理,你得兼顧所有的數據類型才行!!yw328資訊網——每日最新資訊28at.com

類型猜測邏輯

所以呢,你如果想要讓使用者更方便、更無腦地使用,我們可以封裝一套類型猜測邏輯。yw328資訊網——每日最新資訊28at.com

首先我們必須準備一個函數,這個函數用來判斷數據類型:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

但是光是判斷出類型還不夠啊,我們還必須給每一種類型,準備一套 讀取、存入 的策略:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

最后只需要:yw328資訊網——每日最新資訊28at.com

  • 判斷類型
  • 獲取類型對應的存取策略
  • 在存取的時候執行對應策略

yw328資訊網——每日最新資訊28at.com

我們現在可以來試試能不能達到目的:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

顯然已經達到我們想要的效果:yw328資訊網——每日最新資訊28at.com

yw328資訊網——每日最新資訊28at.com

小結

當然, Storage 的封裝不僅僅是類型猜測這么一個功能點!而且其實封裝還有很多兜底的情況我這里沒寫出來,本文就是想讓大家知道,封裝 Storage 的時候,類型猜測是一個最基本的功能,有這個功能,使用者更方便、更無腦地使用。yw328資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-65880-0.html90%的人封裝Storage時忽略了一個點!你們知道封裝的意義是啥嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 解密五個強大的VS Code內置功能

下一篇: C++中產生死鎖的原因深度解析

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 新和县| 常州市| 宁德市| 清河县| 思南县| 滨州市| 五华县| 贵南县| 民丰县| 宜宾县| 宁波市| 新民市| 三明市| 中宁县| 漳州市| 陕西省| 黄浦区| 搜索| 鹰潭市| 石柱| 牡丹江市| 三台县| 徐水县| 巴彦县| 淮滨县| 张家界市| 嘉义县| 富锦市| 克什克腾旗| 新丰县| 虹口区| 石柱| 宁河县| 图片| 陵川县| 华坪县| 广宁县| 奈曼旗| 巴南区| 泰顺县| 公主岭市|