1, 访问属性是通过. 操作符完成的, 但这要求属性名必须是一个有效的变量名. 如果属性名包含特殊字符, 就必须用''括起来:
- var xiaohong = {
- name: '小红',
- 'middle-school': 'No.1 Middle School' //'-'是一个特殊字符
- };
xiaohong 的属性名 middle-school 不是一个有效的变量 (包含特殊字符), 就需要用''括起来. 访问这个属性也无法使用 . 操作符, 必须用['xxx'] 来访问:
- xiaohong['middle-school']; // 'No.1 Middle School'
- xiaohong['name']; // '小红'
- xiaohong.name; // '小红'
也可以用 xiaohong['name']来访问 xiaohong 的 name 属性, 不过 xiaohong.name 的写法更简洁. 我们在编写 JavaScript 代码的时候, 属性名尽量使用标准的变量名, 这样就可以直接通过 object.prop 的形式访问一个属性了.
2,JavaScript 对象的所有属性都是字符串, 不过属性对应的值可以是任意数据类型.
- var xiaoming = {
- name: '小明',
- birth: 1990,
- school: 'No.1 Middle School',
- height: 1.70,
- weight: 65,
- score: null
- };
3, 如果我们要检测 xiaoming 是否拥有某一属性, 可以用 in 操作符
- var xiaoming = {
- name: '小明',
- birth: 1990,
- school: 'No.1 Middle School',
- height: 1.70,
- weight: 65,
- score: null
- };
- 'name' in xiaoming; // true
- 'grade' in xiaoming; // false
不过要小心, 如果 in 判断一个属性存在, 这个属性不一定是 xiaoming 的, 它可能是 xiaoming 继承得到的:
'toString' in xiaoming; // true
因为 toString 定义在 object 对象中, 而所有对象最终都会在 原型链 上指向 object, 所以 xiaoming 也拥有 toString 属性.
要判断一个属性是否是 xiaoming 自身拥有的, 而不是继承得到的, 可以用 hasOwnProperty()方法:
- var xiaoming = {
- name: '小明'
- };
- xiaoming.hasOwnProperty('name'); // true
- xiaoming.hasOwnProperty('toString'); // false
来源: http://www.bubuko.com/infodetail-3667787.html