ES6中对象冻结Object.freeze()

const是ES6中的一种声明常量的方式

如果希望一个对象设置完属性的时候不允许他再做修改的话,可以利用一种freeze
()对象冻结的方法,

浅冻结

const声明的变量是不可修改的,指的是常量名对应的内存单元中的数据不能更换;
他对于基本类型来说的话就是不可修改,但是对于复杂类型来说的话,只是不能更改为新的数据,但是内部属性可以修改;如果希望一个属性完全不能够修改的话这个时候就需要冻结该对象;

const DATA = {
      name: 'jack',
      age: 18,
    };
Object.freeze(DATA)

调用对象冻结的方法,该对象的基本属性和值将不能够被修改;

深冻结

浅冻结只是能冻结一些基本的数据类型,如果在这个对象里面还有一些复杂的数据类型将不能够被冻结,所有如果我们需要将整个对象完全冻结,他们的值不管是基本类型还是复杂类型都不能够被修改的话,就需要封装一个深冻结函数;

const DATA = {
      name: 'jack',
      age: 18,
      aiHao: ['吃', '喝', '打代码', {
        football: '足球',
        basketball: '篮球',
        tanQiu: '弹球'
      }]
    };

以上代码里面,用const声明了一个对象,在这个对象里面还有一些复杂的数据类型浅冻结的范围只能够冻结name和age但是冻结不了里面的数组和里面数组里面的对象,至此封装了一个冻结函数;

function deepFreeze(obj) {
      Object.freeze(obj);
      for (var k in obj) {
        if (typeof obj[k] === 'object') {
          deepFreeze(obj[k]);
        }
      }
    }

调用该方法就能达到深冻结的需求;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值