对js中class私有属性的实验

     今天重温了一下js中的对象属性的特性,发现每一个属性都有value(值),writable(可写性),enumerable(可枚举性),configurable(可配置性),然后就猜想是否可以在class里面运用这几个特性来设置class的私有属性,验证开始:

1.创建一个类testPrivate,然后用Object.defineProperty方法创建一个属性并设置他的特性writable(可写性),enumerable(可枚举性)为false,当然这里configurable属性必须为true否则就不能重新配他的值了。

class testPrivate{
	constructor(){
		Object.defineProperty(this,"x",{
			value:1,
			writable:false,
			enumerable:false,
			configurable:true
		});
	}
    Xset(val){
		Object.defineProperty(this,"x",{value:3});
	}

}

然后去试试

let impTestPrivate = new testPrivate;
//impTestPrivate.x = 4;     //结果:impTestPrivate.x = 1
impTestPrivate.Xset(3);     //结果:impTestPrivate.x = 3

虽然结果还不错,但是在class内部想要改变这个属性的值,也得调用Xset方法,而且在class外依然可以改变这个属性的配置,总之实验接口勉强还行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值