JavaScript学习日记2 对象
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
JavaScript用一个{...}
表示一个对象,键值对以xxx: xxx
形式申明,用,
隔开。
如:
var xiaoming={name:'小明',birth:1990,school:'No.1 Middle School', height:1.70,weight:65,score:null}
注意:最后一个键值对不需要在末尾加,
,如果加了,有的浏览器(如低版本的IE)将报错。
访问属性是通过.
操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''
括起来:
如: var xiaoming = {
name:'小明',
'Middle School':'No.1 Middle School'
}
xiaoming
的属性名middle-school
不是一个有效的变量,就需要用''
括起来。访问这个属性也无法使用.
操作符,必须用['xxx']
来访问:
xiaoming['Middle School'] //No.1 Middle School;
xiaoming.name // 小明
也可以用xiaoming['name']
来访问xiaoming
的name
属性,不过xiao
的写法更简洁。我们在编写JavaScript代码的时候,属性名尽量使用标准的变量名,这样就可以直接通过ming
.nameobject.prop
的形式访问一个属性了。
由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
如:
1 var xiaoming = { 2 name: '小明' 3 }; 4 xiaoming.age; // undefined 5 xiaoming.age = 18; // 新增一个age属性 6 xiaoming.age; // 18 7 delete xiaoming.age; // 删除age属性 8 xiaoming.age; // undefined 9 delete xiaoming['name']; // 删除name属性 10 xiaoming.name; // undefined 11 delete xiaoming.school; // 删除一个不存在的school属性也不会报错
如果我们要检测xiaoming
是否拥有某一属性,可以用in
操作符:
1 var xiaoming = { 2 name: '小明', 3 birth: 1990, 4 school: 'No.1 Middle School', 5 height: 1.70, 6 weight: 65, 7 score: null 8 }; 9 'name' in xiaoming; // true 10 'grade' in xiaoming; // false
注意:不过要小心,如果in
判断一个属性存在,这个属性不一定是xiaoming
的,它可能是xiaoming
继承得到的
要判断一个属性是否是xiaoming
自身拥有的,而不是继承得到的,可以用hasOwnProperty()
方法: