5.10 属性的属性
虽然说起来有些绕口,不过属性也是有其属性的。表 5.1 总结了 ECMAScript 第 5 版中定义了的属性 。
在 ECMAScript 中,属性值被定位为“值属性”这样一种属性。使用这一定义的话,属性就成为了名称(属性名)和多个属性的集合。
表 5.1 属性的属性
属性的属性名 | 含义 |
---|---|
writable | 可以改写属性值 |
enumerable | 可以通过for in 语句枚举 |
configurable | 可以改变属性的属性。可以删除属性。 |
get | 可以指定属性值的 getter 函数 |
set | 可以指定属性值的 setter 函数 |
在表 5.1 的属性中,enumerable 是在 ECAMScript 第 5 版之前就被广泛使用的属性。在标准的对象中有一部分属性的 enumerable 属性为假而无法通过 for in 语句枚举。其中一个很容易理解的例子是数列的 length 属性。
虽然 ECMAScript 第 5 版对属性读写方法进行了标准化处理,不过在实际的 JavaScript 开发中,我们一般也不会用到对属性的读写。而 enumerable 也是标准对象所具有的属性,所以通常也不需要对自己生成的对象的属性显式地进行修改。不过属性本身确实有助于使代码更为健壮,或许随着 ECMAScript 第 5 版的普及,变更属性的情况也会变得越来越常见。