Viki

Viki 写东西的地方

努力上进且优秀
x
github
email
bilibili

Object 方法:`freeze` vs `seal` vs `preventExtensions`

当我们涉足 JavaScript 的世界时,我们会遇到 freezesealpreventExtensions这三个神秘的伙伴。它们就像保护我们的对象免受外界伤害的护身符,但它们之间可是各有不同!

Object.freeze()#

这位大爷可是彻头彻尾的冰霜法师!一旦你使用了Object.freeze()你的对象就会像被冰封一样,无法再添加新的属性或修改已有属性的可写性、可配置性,更别提删除属性了!它就像是让你的对象进入了冰河时代一般,永远静止不动。

可以用 Object.isFrozen 来判断是否被 freeze 了。

const icyObj = { chill: "frosty" };
Object.freeze(icyObj);

Object.seal()#

Object.seal()比起冻结,更像是给你的对象套上了防弹衣。你仍然可以改变已有属性的值,但是你无法添加新属性,或者删除已有属性。这就像是给你的对象穿上了一件紧身衣,保护它免受外界的伤害。

可以用 Object.isSealed 来判断是否被 seal 了。

const bulletproofObj = { strong: true };
Object.seal(bulletproofObj);

Object.preventExtensions()#

哎呀,Object.preventExtensions()这位大哥有点宽容,他只是阻止了你往对象里加新属性,但是你依然可以修改和删除已有属性。他就像是给你的对象画了个边界线,告诉你 “哥们,不能再往外扩张了哦!”

可以用 Object.isExtensible 来判断是否被 preventExtensions 了。

const extendableObj = { flexible: true };
Object.preventExtensions(extendableObj);

这些方法虽然冷门,但却能保护你的宝贝对象免受外界的破坏,请记住它们,就像是在寒冷的世界中给你的对象穿上了厚厚的保护衣!

文章由 ChatGPT 润色生成。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。