JavaScript对象是只有属性和方法的特殊数据类型,由键值对组成。JavaScript的对象用于描述现实世界中的某个对象。JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…此外,JavaScript 允许自定义对象。
一、对象的格式
用{ }把键值对包起来,键值对以xxx: xxx形式申明,用【,】隔开,最后一对后面不用加【,】否则低版本的浏览器会认为对象属性还没书写完毕,会报错。
例如:
var project = {
name:'小明',
age:18,
school:'附中',
father:'大明',
mother:'阿芳',
'best-friend':'小红',
address:'北京路',
phone:'13314756284'
}
上面的project 就定义了一个对象。
二、访问对象属性
定义好对象之后我们应该怎么访问对象的属性呢?有两种访问的方法。
【1】:我们可以通过
对象名.属性来访问。因为这个属性属于这个对象,因此可以使用该方法。
例如:
console.log(project.name)//小明
console.log(project.age)//18
【2】:你也许会发现,为什么‘best-friend’属性要用引号‘’括起来呢?因为属性中包含了特殊字符【-】,所以要用对象名[‘属性’]的方式来访问。
例如:
console.log(project['best-friend']);//小红
console.log(project['address']);//北京路
会发现,其实这个方法就是把键变成字符串而访问。你觉得哪种方法简单就用哪种,其实都可以。
三、操作对象
怎么对对象的属性和属性值进行修改呢?由于JavaScript的对象是动态类型,所以既然可以访问到属性,那当然可以修改,增加属性和删除属性。
例如:小明改名字了,他最好的朋友也不是小红了,他没朋友了,转校了。
console.log(project.name='罗小明');//修改
delete project['best-friend'];//删除
project['new-school']='新东方';//新增
console.log(project);
四、查询对象属性
加入一个对象的属性太多了,我们需要检测某个属性在不在这个对象内,我们可以用 in 来检测。
例如:
console.log('name' in project)//true
console.log('page' in project)//false
但需要注意的是,用 in 方法检测到的属性有可能不是改对象的,有可能是该对象继承得到的。
例如:
console.log('toString' in project)//true
所以可以使用hasOwnProperty( )方法来查询对象的属性是否是它自己的,而不是继承的。
例如:
console.log(project.hasOwnProperty('toString'));//false