[英]Is there any difference between WeakMap and private member of a class in JavaScript ES6?
我試圖找出與WeakMap構造函數相比,在類中定義本地/私有屬性和方法之間的區別是什么?
將它們從外面隱藏起來的目的是相同的還是使用其他東西?
根據您當前的實現:
let x
不是很有用,因為它只能在構造函數中引用。 不能在任何原型方法中使用。 另一方面,WeakMap可以在任何地方引用。 那是一個很大的區別。 radius
值。 如果希望WeakMap通過閉包適當地私有,則可以使用IIFE定義類,例如:
const myClass = (() => {
const weakMap = new WeakMap();
return class Circle {
// etc
})();
這樣,頂層僅引用myClass
,而不引用weakMap
。
每當僅在構造函數中需要變量時,我就會在構造函數中使用let x
不一定是為了隱藏數據,而是因為它在構造函數之外沒有用。 請參見為什么限制范圍是一種好的編程習慣?
請注意,目前有一個關於類字段的建議,該字段可能最終會實現,其中包括專用字段的語法,例如:
class Circle {
constructor(radius) {
this.#x = radius;
// ...
這將允許從Circle
內的任何位置訪問#x
,而無其他地方。 它在功能上等同於WeakMap
實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.