冻结JS对象方法技术
我是本际云服务器推荐网的小编小本本,今天要和大家分享的是冻结JS对象方法技术,让我们一起来学习学习吧!

冰封的美人——冻结JS对象
在学习冻结JS对象之前,我们先了解一下JS对象。JS对象是普通对象,采用键值对方式表示,其属性不加引号,对象内有对象属性,对象方法和普通的对象概念相同。例如:
var obj = {
name: "cxy",
age: "18"
}
要是只是修改对象的属性,可以使用obj.name="juejin",然后使用console.log(obj.name)查看属性是否生效。但是如果想要冻结对象,就可以使用Object.freeze()方法:
const iceObj = Object.freeze(obj)
执行上述代码后,iceObj就变成了冻结的对象。冻结是指对象的属性不能被修改、新增或删除。如果尝试修改对象的属性,如iceObj.age="19",然后再运行console.log(iceObj.age),会发现输出结果仍然是18。此外,还可以使用Object.isFrozen()方法检验对象是否被冻结,返回布尔值。
不可冻结的对象
但是,并不是所有的对象都可以被冻结。使用Object.freeze()方法不能冻结嵌套对象。例如:
var obj = {
name: "cxy",
age: "18",
son: {
name: "son",
age: "1"
}
}
尝试修改并打印一下son中的name属性,会发现其属性值是修改后的值。可以使用Object.seal()方法冻结数组,同样可以使用下标修改数组元素。而与Object.freeze()方法不同的是,Object.seal()方法可以修改属性值,但是不可以删除属性值。Object.isSealed()方法可以检验对象是否被冻结。
Object.preventExtensions()
除了Object.freeze()和Object.seal()方法外,还有一种冻结的方法即Object.preventExtensions()。它可以冻结对象增加属性的能力。例如:
var obj = {
name: "cxy",
age: "18"
}
const iceObj = Object.preventExtensions(obj)
iceObj.weight = "180"
console.log(iceObj)
执行上述代码后,可以发现属性weight并没有被添加到对象中来,即对象属性的新增能力被冻结。同样可以使用Object.isSealed()方法检验对象是否被冻结。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7395.html
