1

在阅读一本 JavaScript 的书时,我读到了

当“直接在对象上定义”时,Data Properties 的所有属性默认为 true 。

然后经过一些描述,它再次说

"当您使用 Object.defineProperty()"时,除非另有说明,否则可配置、可枚举和可写的值默认为 false。

我想,在第一条语句中“直接在对象上定义”意味着使用点运算符或对象文字符号,如下所示:

var obj = new Object();
obj.name = "Mahesh";

但是,在通过任一方法将属性添加到对象之后,是否有任何方法可以试验检查这些属性已设置为什么?

4

1 回答 1

3

您可以使用getOwnPropertyDescriptor

> var desc = Object.getOwnPropertyDescriptor(obj, 'name');
{"value":"Mahesh","writable":true,"enumerable":true,"configurable":true}

desc将包含标志configurableenumerable. 如果属性是数据描述符(否getset),desc还将包含value和标志writable。如果属性是访问器描述符,desc也将包含getset方法。

于 2012-10-18T20:08:44.870 回答