国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 如何覆蓋本地存儲中的方法

如何覆蓋本地存儲中的方法

來源:千鋒教育
發布人:syq
時間: 2022-09-14 16:27:52 1663144072

  將本地存儲與腳本結合使用。我經常想重寫以實現某個功能。重寫中的方法有哪些?有許多開發人員想要重寫方法以實現密鑰的過期時間,或者監視密鑰的讀寫。那么,有哪些方法可以重寫中的方法。localStorage localStorage localStorage localStorage

1

  1. 直接在本地存儲上重寫

  許多開發人員喜歡重寫的想法,首先保留原始方法,然后直接在localStorage上重寫該方法,如下所示。

2

  但是,這種編寫方式并不是覆蓋該方法,而是向 中添加一個屬性。聲明方法的 value 屬性時,將覆蓋本機方法。setItem() setItemlocalStorage setItem()

  我沒有對它進行太多測試,但是在某些瀏覽器中,此屬性將被忽略并導致我們的重寫失敗。

  2. 覆蓋localStorage.__proto__的方法

  如果我們仔細觀察,設置項和獲取項是從存儲偽屬性繼承的。__proto__

3

 

  然后我們直接覆蓋上述方法。localStorage.__proto__

4

  這將實現該方法的實際重寫。setItem()

  但這里仍然存在一個問題。兩者均從存儲繼承。在 上重寫屬性或方法后,中的方法也會被重寫。localStoragesessionStoragelocalStorage.__proto__sessionStorage

5

  3. 外包裝層

  我們不直接修改方法本身,而是在外面包一層,然后用來實現底層的存儲功能。localStorage localStorage

6

  這樣,自由度相對較高,并且在第1節中沒有兼容性問題。只有使用的名稱已更改,并且 中的屬性和方法被完全阻止。localStorage

  如果要使用沒有包的自定義對象,則需要實現所有屬性和方法。不可能像上面這樣單獨嘲笑一種方法。

  4. 覆蓋本地存儲

  使用 或等效于完全覆蓋變量。比第3節更好,因為名稱沒有改變。Object.definePropertyProxylocalStorage

  4.1 直接覆蓋,無效果

  如果用以下方法直接覆蓋,將無效果。

8

  我們通過 獲得 的屬性描述符。可以發現沒有可寫的:true屬性,這意味著它不是直接可寫的。localStorage Object.getOwnPropertyDescriptor localStorage

  4.2 覆蓋對象.定義屬性

  由于沒有屬性,我們將向其添加一個屬性。我們可以用覆蓋 。writable localStorage Object.defineProperty

9

  但是你不能使用上面的寫作方法與外面的一層。如果你直接給出上面的內容,那么它將產生無限的遞歸(為了避免誤導,錯誤的寫作方法不會在這里寫)。myLocalStorage localStorage

  我已經在這里做了一個備份。如果您需要本機方法,那么您也可以操作它。localStorage

  5. 總結

  在本文中,我們沒有專門實現諸如設置過期時間之類的功能。但是從另一個角度談談如何重寫或其中的方法。localStorage

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區