來自window全域性的乙個使用大坑

2021-08-30 02:10:52 字數 531 閱讀 9087

想都沒想過會出現這樣的問題:

首先我們簡單看一下這個函式:

//建立乙個全域性監聽事件

export const sendevent = (key, vals) =>

定義在window上面的全域性監聽函式:

傳送資料使用: sendevent(key,vals);

接收資料使用:window.addeventlisener(key,res=>);

銷毀:window.removeeventlisener(key,res=>{});

表面上看起來應該沒啥問題,但是存在的隱患還是很大的。首先就是記憶體的使用率會增加,再不銷毀監聽的情況下,專案啟動是會一直存在記憶體中。每次傳送資料都是在疊加,特別是物件,感覺是不能被銷毀的,應該是js不能監聽到物件屬性的變化原因導致的,很困惑。

(遇到的就是儲存乙個物件,包含很多屬性,在第一次提交時,資料沒有什麼問題,再第二次提交的時候就會有點小問題,多個監聽事件去處理乙個物件的時候,就會發現,有的會改變資料,有的就直接返回第一次提交的資料...沒弄懂!)

使用乙個全域性變數

然而,有區域性變數同名的全域性變數通常是製造麻煩,並應盡可能避免。使用匈牙利表示法,它是常見的全域性變數 g 字首。這是區分全域性變數與區域性變數的一種簡單的方式,避免了由於被隱藏變數命名衝突。新的程式設計師經常使用全域性變數很多,因為他們是容易的工作,特別是當涉及到許多功能。然而,這是乙個非常糟糕...

來自乙個react SPA的總結 redux篇

本文是自己這幾天做乙個reactspa的其中之一篇總結,主要總結在實踐中,學習到的有關redux的一些思想 並沒有太多細節 方便日後自己的重溫 redux用作管理應用的data state和ui state,在react中元件間的通訊一般是parent child間,兄弟間鑑於我初出茅廬,暫時沒遇到...

來自乙個前端新手的感悟

初入社會,我只是乙個前端路上飛行的菜鳥,經過一段時間的工作之後,才知道,我踩了無數的坑。希望,看過我寫的文章的同胞們,不要再和我犯同樣的錯誤。純屬個人思考 1.當負責專案中乙個模組的開發時,不要忘記,它只是專案中的乙個模組。當我拿到專案經理安排好的工作計畫書時,開始對自己負責的部分的需求進行熟悉,這...