试验JavaScript属性属性默认值
在读一本JavaScript的书时,我读到了这一点 当直接在对象上定义时,数据属性的所有属性默认为true 然后经过一些描述,它又说 “当您使用Object.defineProperty()”时,可配置、可枚举和 除非另有规定,否则可写默认值为false 我猜,在第一条语句中,“直接在对象上定义”意味着使用点运算符或对象文字符号,如下所示:试验JavaScript属性属性默认值,javascript,Javascript,在读一本JavaScript的书时,我读到了这一点 当直接在对象上定义时,数据属性的所有属性默认为true 然后经过一些描述,它又说 “当您使用Object.defineProperty()”时,可配置、可枚举和 除非另有规定,否则可写默认值为false 我猜,在第一条语句中,“直接在对象上定义”意味着使用点运算符或对象文字符号,如下所示: var obj = new Object(); obj.name = "Mahesh"; 但是,在通过任何一种方法将属性添加到对象后,是否有任何方法可以试
var obj = new Object();
obj.name = "Mahesh";
但是,在通过任何一种方法将属性添加到对象后,是否有任何方法可以试验检查这些属性设置为什么?您可以使用:
desc
将包含标志可配置
和可枚举
。如果属性是数据描述符(无get
或set
),则desc
还将包含值
和标志可写
。如果属性是访问器描述符,desc
还将包含get
和set
方法。那么console.log(obj)
呢?在Chrome控制台或FireBug中,您应该能够扩展该节点并查看其所有属性的设置。我不确定可配置
和可写
@bfareto是否正确,使用Object.propertyEnumerable()至少可以测试我对[[enumerable]的理解它的行为与书中描述的一模一样says@MicahHenning我认为我们只能在Chrome控制台窗口中看到对象的属性,而不能看到令人愉快的消息。defineProperty
上的MDN页面缺少指向该属性的链接。
> var desc = Object.getOwnPropertyDescriptor(obj, 'name');
{"value":"Mahesh","writable":true,"enumerable":true,"configurable":true}