簡體   English   中英

JavaScript-屬性和變量

[英]JavaScript- properties and variables

在我的代碼中,我要刪除自定義對象。 我意識到,我們無法刪除使用'var'聲明的對象。 (在閱讀了本文檔的Delete操作符之后 )。

  • 我的大多數對象都是使用'var'聲明和初始化的。 它們不能在單個delete語句中刪除(除非我遍歷它並刪除每個屬性。)我可以將它們設置為“ null”。
  • 我的自定義對象相對較大(可能會阻塞大量內存。

為了更好的內存管理和性能,我應該使用“屬性”或“變量”來存儲對象嗎? 會有所作為嗎?

請提供任何參考,以更好地了解javascript中的“屬性”和“變量”。

globalProp = {//can be deleted, it is a 'property' to global object.
'name': 'Mia',
'age': 34,
'sex': 'F'
};

var globalVar = {//can not be deleted with delete statement, it is variable of global object
'name': 'Lia',
'age': 25,
'sex': 'F'
};

(在上面的代碼中,我們可以將globalProp稱為“ window.globalProp”,但不能將globalVar稱為window.globalVar。)

小提琴

JavaScript具有運行時和垃圾回收器以及一些復雜的清理和管理算法,任何試圖干擾或加速它們的嘗試都可能恰好相反,從而導致運行時損失。 最好將內存管理留給基礎運行時。

但是,您可能需要考慮以下幾點:
1)盡可能避免全局變量。 對於支持全局/靜態變量的任何語言,這都是一個很好的建議。 全局變量表示沒有范圍的全局引用-只要(全局)引用保持引用的對象的存在,該引用對象就會存在。 如果全局變量是不斷向其自身附加子代的數組或對象,則這種危險甚至會進一步增加。 這是導致托管語言中的內存泄漏的常見情況
2)避免循環引用-不要使一個成員變量指向另一個對象,並且該對象持有一個指向第一個對象的成員。 這將使垃圾收集器很難工作。
3)編寫干凈,簡單,可維護的代碼。 這看似無關緊要,但是更簡單,簡短,可維護的代碼可能會增強交互器/編譯器優化代碼的能力。
4)不要對代碼如何影響速度一無所知。 那里有很多層,您不能簡單地承擔任何責任。 對代碼進行基准測試以獲得真實的事實。
5)除非需要,否則不要優化(您可能不需要)。

所以對於你的問題:盡可能用var聲明任何東西。 使用var聲明變量將使其局部化-當函數結束時,引用將超出范圍,GC可以開始確定對象的銷毀時間。 聲明不帶var的對象會使它們成為全局對象-尚不清楚GC何時決定刪除該對象,從而減慢了運行速度。 如您所知-全局聲明變量會導致許多錯誤,請注意范圍。 不要使用delete 這是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM