我试图在不使用Object.freeze()
的情况下冻结对象,是否可以这样做?
const obj = {
a:'test',
b:'Something'
}
不是字面意思,不是。Object.freeze
将对象的完整性级别设置为frozen
,这是无法通过其他方式实现的。
你可以做大多数使物体"凝固"的事情。但是,分别使用Object.preventExtensions
来防止添加属性,使用Object.getOwnPropertyDescriptor
和Object.defineProperty
的组合来防止属性被修改或删除。我不认为你可以阻止它的原型通过Object.setPrototypeOf
被改变,尽管,这是冻结物体的另一个方面。(如果对象继承自Object.prototype
,则可以干扰设置从Object.prototype
继承的__proto__
属性,但这不会对Object.setPrototypeOf
产生任何影响。)
但是你不能像Object.freeze
那样设置对象的完整性级别。