JavaScript 类属性私有化


1、使用 Symbol 类

const _items = Symbol("item");

class Test {
	constructor() {
		this[_items] = [1,2];
		this.count = 1;
	}
}

使用该类虽然无法直接通过 Test._items 获取到值,但它可以被 Object.getOwnPropertySymbols 方法获取到。

但没关系,还有第二种方法。

2、使用 WeakMap 类

const items = new WeakMap();

class Test {
	constructor() {
		items.set(this,[]);
		this.count = 1;
	}
}

使用这个类的话,同样无法通过 Test.items 获取到值。

并且在该类里面,也只能通过 items.get(this) 来获取值。

不过值得注意的是,在扩展该类时,无法继承其私有属性!

3、在类里为属性添加 # 号

class Test {
	#count = 1;
	#items = [];
}

通过这个方式,同样无法通过 Test["#items"] 来获取该类里的 #items 的值,但实际上打印 Test 的这个类的时候又能够看到它。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值