It has been 1502 days since the last update, the content of the article may be outdated.

对象

javaScript的对象是一种无序的集合数据类型,它由若干键值对组成

javascript
var xiaoming = {
name: '小明',
birth: 1990,
'middle-school': 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};

注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。

使用属性

javascript
>xiaoming.name; 
'小明'
>xiaoming['name'];
'小明'
>xiaoming.birth;
1990
>xiaoming['middle-school'];
'No.1 Middle School'

属性名middle-school不是一个有效的变量,就需要用’’括起来。访问这个属性也无法使用.操作符,必须用[‘xxx’]来访问

访问不存在的属性不报错,而是返回undefined:

javascript
>xiaoming.hjh;
undefined

JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性

javascript
var xiaoming = {
name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错

in

javascript
'name' in xiaoming; // true
'grade' in xiaoming; // false

如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的
要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法

javascript
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false

exercise

输出对象中的所有属性

javascript
var arr = {
'name' : 'zxt',
'age' : 18,
}
alert(JSON.stringify(arr));
javascript
....key就是属性啊
var xiaoming = {
name:'xiaoming',
age:'18'
}
for(key in xiaoming){
alert(key+':'+xiaoming[key]);
}