JS--对象
2017-11-20 本文已影响0人
nickName0
- JS 对象
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意:最后一个键值对不需要在最后添加,。例如声明一个学生对象:
var studentA = {
name : "Tom",
age : "14"
}
访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用' '括起来,例如给studentA
对象添加一个属性class-numer
,由于属性名含有特殊字符-
,则该属性要以以下格式进行声明:
var studentA = {
name : "Tom",
age : "14",
'class-numer' : 2
}
- 由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
var studentA = {
name: 'Tom'
};
studentA.age; // undefined
studentA.age = 18; // 新增一个age属性
studentA.age; // 18
delete studentA.age; // 删除age属性
studentA.age; // undefined
delete studentA['name']; // 删除name属性
studentA.name; // undefined
delete studentA.height; // 删除一个不存在的school属性也不会报错
- 如果我们要检测某个对象是否拥有某一属性,可以用
in
操作符,检测某个对象是否拥有某一属性应该注意该属性可能是该对象从父类那里继承过来的,此时也会返回true:
'name' in studentA; // true
'toString' in studentA; // true 因为toString定义在object对象中,而所有对象最终都会在原型链上指向object
要判断一个属性是否是某个自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:
studentA.hasOwnProperty('name'); // true
studentA.hasOwnProperty('toString'); // false
- 注意点
访问含有特殊字符的属性也不能直接使用.语法,应该使用以下格式进行访问:
var classNo = studentA['class-nume']; // 2
当然,没有包含特殊字符的属性名也可以使用上述语法进行访问,不过直接使用.语法访问不含有特殊字符的属性比较直观。
如果访问没有定义的属性,则返回undefined,例如在上述对象 studentA
中我们使用.语法访问weight
属性,则返回undefined:
var weight = studentA.weight; // undefined