深入了解Object.defineProperty()

147 阅读1分钟

参考
1、developer.mozilla.org/zh-CN/docs/…
2、www.jianshu.com/p/8fe1382ba…

1、configurable: false 时,不能删除当前属性,且不能重新配置当前属性的描述符(有一个小小的意外:可以把writable的状态由true改为false,但是无法由false改为true),但是在writable: true的情况下,可以改变value的值
2、configurable: true时,可以删除当前属性,可以配置当前属性所有描述符。
3、禁止一个对象添加新属性并且保留已有属性:Object.preventExtensions(...)
4、Object.seal()会创建一个密封的对象,这个方法实际上会在一个现有对象上调用object.preventExtensions(...)并把所有现有属性标记为configurable:false。密封之后不仅不能添加新属性,也不能重新配置或者删除任何现有属性(虽然可以改属性的值)
5、Object.freeze()会创建一个冻结对象,这个方法实际上会在一个现有对象上调用Object.seal(),并把所有现有属性标记为writable: false,这样就无法修改它们的值。