通常使用“.”运算符来存取对象的属性的值。位于点运算符左边的值是想要访问其属性的对象,点运算符右边的值应该是属性名。对象的属性和变量的工作方式相似,既可以把值储存到其中,也可以从中读取值。
① 属性的枚举
for/in 循环提供了一种遍历对象属性的方法。下面的代码展示了一个函数,可以用来列出对象的所有属性名:
function displayPropertyNames(obj){
var names="";
for(var name in obj) names+=name+"\n";
alert(names);
}
注意for/in循环列出的属性并没有特定顺序,而且虽然它能枚举出所有的用户定义的属性,但是却不能枚举出某些预定义的属性或方法。
② 检查属性的存在性
in 运算符可以用来测试一个属性的存在性。例如
if("x" in o) o.x=1;
事实上,上面的写法很少见。因为如果查询并不存在的一个属性,会返回undefined值。因此上面的代码通常这样写
if(o.x!==undefined) o.x=1;
注意一个属性也可能已经存在但还是未定义的。例如o.x=undefined;属性x已经存在但还没有值。
③ 删除属性
可以使用delete运算符来删除一个对象的属性:
delete book.chapter2;
删除属性实际上就是从对象移除了属性。在删除之后,for/in循环将不会枚举该属性,并且in运算符也不会检测到该属性。