JS对象-不可扩展对象、密封对象、冻结对象
2023-09-14 09:00:17 时间
不可扩展对象
Object.preventExtensions()
仅阻止添加自身的属性。但属性仍然可以添加到对象原型。
可以用 Object.isExtensible(obj) 来判断对象是否可扩展
密封对象
Object.seal()
密封对象不可扩展,而且已有的属性成员[[configurable]]
特性将被设置成false
可以用 Object.isSealed() 来判断对象是否已经被密封
冻结对象
Object.freeze()
冻结的对象既不可以扩展,又是密封的,而且对象数据属性的[[writable]]特性会被设置为false。
由于访问器属性没有writable,所以访问器属性还是可以用的:
let _obj = {name: 123} let obj = {} Object.defineProperty(obj, 'name', { configurable: true, enumerable: true, set(val) { _obj.name = val; }, get() { return _obj.name } }) Object.freeze(obj); obj.name //123 obj.name = 666; obj.name // 666
总结:
方法名 | 增(extensible) | 删(configurable) | 改(writable) |
Object.preventExtensions | × | √ | √ |
Object.seal | × | × | √ |
Object.freeze | × | × | × |
相关文章
- JS框架_(coolShow.js)图片旋转动画特效
- JS框架_(Popup.js)3D对话框窗口插件
- JS框架_(JQuery.js)带阴影贴纸标签按钮
- JS框架_(JQuery.js)图片相册掀开切换效果
- [JS Compse] 4. A collection of Either examples compared to imperative code
- js this是什么?[多次书写]
- JS 利用正则表达式替换字符串
- js Date对象的扩展函数
- js Array扩展函数
- Vue.js 入门指南
- 多点触控插件Hammer.js
- JS获取本周、本季度、本月、上月的开始日期、结束日期
- js对象的引用传递在react中的使用注意事项
- js根据输入关键字给字体标红、变红
- js怎样把对象,装在数组里呢?提交后,怎么变成object了?
- node.js JS对象和JSON字符串之间的转换
- Arcgis for Js之Graphiclayer扩展具体解释
- js学习1
- js常用的7种函数总结
- 【JS高级】js之正则相关函数以及正则对象_02