javascript - 为什么 javascript 对象属性描述符不总是默认为 false (根据规范)

标签 javascript object properties attributes

根据spec添加 javascript 对象属性时,以下默认值将应用于属性描述符:

  • 可配置: false
  • 可枚举: false
  • 可写:假

但是,当使用以下(非常流行的)点表示法分配对象属性时,它们都默认为 true。

myObject = {};
myObject.a = 1;

这是为什么?

最佳答案

显然 - 再次根据规范的非明显部分 - 这是由于定义对象属性的方式。 请参阅here

<小时/>

如果使用点表示法方法定义对象属性:

var myObject={}; 
myObject.a=1; 

然后所有属性描述符默认为true

<小时/>

如果使用括号表示法方法定义对象属性:

var myObject = {};
myObject["a"] = 1;

然后所有属性描述符默认为true

<小时/>

但是,如果使用 defineProperty 方法定义对象属性:

var myObject={}; 
Object.defineProperty(myObject, 'a', { value: 1 });

任何未定义的描述符默认为false

<小时/>

请参阅此 jsfiddle 中的示例

关于javascript - 为什么 javascript 对象属性描述符不总是默认为 false (根据规范),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726816/

相关文章:

javascript - insideHTML 不打印。 (Javascript)

javascript - Amazon S3 上传图像 - 直接从浏览器使用 Angular js

javascript - image.complete 总是返回真

php - 显示该地址的纬度和经度

JavaScript 不认为 'class' 对象已被定义

java - Spring Util :Properties Injection via Annotations into a bean

c# - 自动实现属性的代码契约(Contract)

javascript - 虽然不能保证 for..in 循环中的元素顺序,但在实践中实现之间有什么偏差?

scala - Scala 中对象和类的区别

maven-2 - 如何根据我的个人资料更改 maven 中的 .properties 文件?