对象属性有两种,一种是数据属性,另一种是访问器属性
数据属性有四个描述其行为的特性,分别为[[Configurable]][[Enumerable]][[Writable]][[Value]]
访问器属性有四个特性,分别为[[Configurable]][[Enumerable]][[Get]][[Set]]
想深入了解这两种属性可以前往数据属性和访问器属性。

要修改属性默认的特性,必须使用 Object.defineProperty() 方法。这个方法接收三个参数:属性所在的对象、属性的名字和一个描述符对象。其中,描述符(descriptor)对象的属性必须是数据属性特性访问器属性特性其中的一或多个值。

一旦把属性的 configurable 设置为 false,就不能再把它变回可配置了。此时,再调用 Object.defineProperty()方法修改除 writable 之外的特性,都会导致错误。

上面这段话是《JavaScript高级程序设计(第3版)》里面的,但是我验证了一下发现有一些偏差

var obj = {};
Object.defineProperty(obj , "name" , { value: "XD",configurable: false
});Object.defineProperty(obj , "name" , { value: "XD",configurable: true
});                         //报错

上面这种情况跟红宝书说的情况是一样的,一旦把属性 configurable 设置为 false,就不能再把它变回可配置了,不然会报错。

var obj = {};
Object.defineProperty(obj , "name" , { value: "XD",configurable: false
});//报错
Object.defineProperty(obj , "name" , { value: "XD",configurable: false,writable: true
});
var obj = {};
Object.defineProperty(obj , "name" , { value: "XD",configurable: false,writable: true
});//不报错
Object.defineProperty(obj , "name" , { value: "JH",configurable: false,writable: false
});

上面两种情况跟红宝书说的有些不一样。
configurablefalse,且 writablefalse 时,调用 Object.defineProperty()方法修改 writabletrue 时会报错。
configurablefalse,且 writabletrue 时,调用 Object.defineProperty() 方法修改 writablefalse 时会修改成功,不会报错。

关于数据属性特性configurable设置为false后的限制相关推荐

  1. 解决ThinkPHP3.2 将Debug 关闭 设置为False 报页面错误 请稍后再试

    1.最近系统要上线,就把Index.php中的debug 关闭 设置成false,结果出现如下的错误 2.修改config.php文件,加入   'SHOW_ERROR_MSG' => TRUE ...

  2. php pdo attr_emulate_prepares,PDO操作,设置了ATTR_EMULATE_PREPARES属性为false后发现还是在本地模拟prepare...

    PDO操作,设置了ATTR_EMULATE_PREPARES属性为false后发现还是在本地模拟prepare //连接数据库部分 try{ $dbh = new PDO('mysql:dbname= ...

  3. WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题解决方案

    在做winform程序开发时,我用DataSource绑定了ListBox中的Item,但是当我进行一些添加.删除操作时就报了这个错"设置DataSource属性后无法修改项集合" ...

  4. SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false...

    根据When an overlay node with actions is copied there is currently a SpriteKit bug where the node's is ...

  5. [css] 当一个元素被设置为浮动后,它的display值变为什么呢?

    [css] 当一个元素被设置为浮动后,它的display值变为什么呢? 一个元素被设为绝对定位或者浮动后,其display计算值就变为了block,尽管其表现形式和inline-block类似--包裹 ...

  6. jquery datatable设置垂直滚动后,表头(th)错位问题

    jquery datatable设置垂直滚动后,表头(th)错位问题 问题描述: 我在datatable里设置:"scrollY": '300px',垂直滚动属性后,表头的宽度就会 ...

  7. 计算机管理蓝屏不重启,windows10系统怎么设置蓝屏后不自动重启

    想必有很多windows10系统用户都会遇到过蓝屏问题吧,而通常情况下蓝屏之后电脑就会自动重启,短暂的蓝屏时间让用户们来不及记录下错误信息,那么其实我们可以手动设置蓝屏后不自动重启,下面小编就给大家带 ...

  8. axure中交互样式设置鼠标悬停后其他的按下选中无效_Axure交互动作

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 axure中交互样式设置鼠标悬停后其他的按下选中无效_交互区域 -- 交互动作 启用情形+交互事件+交互动作 三个部分构成了整个原型的交互逻辑.启用情形是 ...

  9. 计算机管理蓝屏不重启,win10系统怎么设置蓝屏后不自动重启

    在使用win10系统的时候,经常会碰到一些问题,比如常见的蓝屏,但是让人困扰的时候,蓝屏之后电脑就会自动重启,短暂的蓝屏显示时间都来不及记下错误提示信息,那么其实我们是可以设置蓝屏后不自动重启的,接下 ...

最新文章

  1. 最受欢迎的ASP.NET的CMS下载
  2. python paramiko包 ssh报错No existing session 解决方法
  3. C++Study 指针详解
  4. 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
  5. 发生生成错误是否继续并运行上次的成功生成_JavaScript 是如何运行的?
  6. 是vans_终于在中国发力的 Vans
  7. 基于高阶累积量的数字调制信号分类(Hierarchical Digital Modulation Classification Using Cumulants例1复现)
  8. 绿盟漏洞扫描_主机安全漏洞解决方案
  9. 车辆特征系数——车速的计算
  10. layui 弹出框改变按钮颜色样式 自定义皮肤
  11. 三个多月、40余场面试浓缩为6000字
  12. 使用scrapy来抓取 ChinaPub 这个网站上的图片_并且将其下载到本地
  13. 台式计算机开机黑屏,台式电脑开机黑屏只有一个点怎么处理?
  14. vue 强制清理浏览器缓存
  15. QQ空间g_tk、bkn加密参数算法
  16. 如何下载react依赖包
  17. 1小时学会HTML5基础
  18. Cannot connect to database (possibly bad driver/URL combination)
  19. 为iPart表添加“重量”列
  20. 黑客内参小讲堂三步实现滚动条触动css动画效果

热门文章

  1. 【架构设计的艺术】Kafka如何通过精妙的架构设计优化JVM GC问题?
  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(90)-EF 扩展操作
  3. JS实现表单多文件上传样式美化支持选中文件后删除相关项
  4. python 修行之路(1-自我介绍及python环境的搭建)
  5. IntelliJ IDEA 12 中用 Maven + Jetty 来开发Web项目
  6. C++之 伪随机数的生成
  7. linux启动本地远程服务,如何使用SSH在本地控制远程服务器执行命令
  8. mysql中select后接数字_MySQL SELECT用于从一组数字中排列一个数字
  9. 全部都显示服务器已加扰,特殊字符在浏览器中正确显示,但在phpMyAdmin中加扰...
  10. String s String s=null和String s=a区别