在ES6 中,程式設計師可以使用class 關鍵字定義匿名類,並立即使用new 運算子實例化它們:
<code class="javascript">var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');</code>
雖然這看起來很方便,但了解其底層行為和潛在缺點至關重要。
在幕後,新的類別表達式建立一個新的建構函式每次評估時都會傳回函式和原型物件。這與常規類別聲明不同,常規類別聲明定義在所有實例之間共享的單一建構函式和原型。
a。記憶體消耗過多:
透過立即實例化,每次使用新類別表達式建立物件時都會建立新的建構子和原型。這可能會導致不必要的記憶體消耗,特別是在實例化大量物件的情況下。
b.缺乏繼承:
使用新類別模式建立的物件不會從父建構子繼承或共享公共原型。因此,它們失去了類別的優點,例如繼承、方法重用和多態性。
有些開發人員可能會使用這種模式來建立單例對象,但效果並不好。建構函式仍然可以訪問,並且可以使用 newentity.constructor 建立第二個實例,這違背了單例的目的。
由於這些缺點,強烈建議不要這樣做使用新的類模式。相反,為了簡單性、可讀性和實例化效率,應選擇傳統的物件文字:
<code class="javascript">var entity = { name: 'Foo', getName() { return this.name; } };</code>
以上是匿名類別實例的陷阱:何時以及如何避免這個 JavaScript 陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!