不可扩展对象

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 //
obj.name = 666;
obj.name //

总结:

方法名 增(extensible) 删(configurable) 改(writable)
Object.preventExtensions ×
Object.seal × ×
Object.freeze × × ×

最新文章

  1. Git异常:Cannot delete the branch 'test1' which you are currently on
  2. Linux环境下的Nginx编译与安装
  3. 理解android.intent.action.MAIN 与 android.intent.category.LAUNCHER
  4. ASP.NET MVC Razor语法
  5. hdu 2191 多重背包
  6. VM Depot 镜像新增系列II – 学习管理系统,内容管理系统以及平台管理工具
  7. 2014年河南省第七届ACM大赛总结
  8. 重复数据删除(De-duplication)技术研究(SourceForge上发布dedup util)
  9. ES 6 : let与const
  10. tablelayoutpanel内部组件变形
  11. JDBC02 利用JDBC连接数据库【使用数据库连接池】
  12. openstack pike与ceph集成
  13. express学习之session
  14. rails中link_to与button_to的一个功能差异
  15. windows根据端口号杀进程
  16. Anaconda的安装与使用
  17. LODOP不同打印机出现偏移问题
  18. kvm虚拟化2-qemu-kvm
  19. CentOS7时间和日期的同步 (chrony和)
  20. Java学习---- 数组的引用传递

热门文章

  1. 基于语法树和概率的AI模型
  2. (二)Struts.xml文件详解
  3. matlab cell
  4. kong命令(三)route
  5. linux内核过高导致vm打开出错修复脚本
  6. Java中的ThreadLocal详解
  7. Computer Vision_33_SIFT:Evaluation of Interest Point Detectors——2000
  8. 【Day5】3.反爬策略之模拟登录
  9. springboot 使用 @data 插件,减少代码量
  10. RT-Thread--线程管理