一、对象概念
- 广义理解的对象:
一切皆对象,任何数据都是对象;
数组、函数都是对象的一种,数字、字符串、布尔值也有对象的形态 - 狭义理解的对象:
单指 Object 数据类型,与数组、函数是平等的,都属于对象类型的一种
二、Object类型
1. 什么是Object对象
- Object 对象是值的无序集合
- Object 对象由属性组成; 属性由属性名和属性值组成。
- Object 对象的属性名是字符串形式,属性值可以是任意类型的数据。
- 如果某个属性的值是 function 类型的数据,该属性可以称为方法
2. 声明Object对象
-
直接量方式
// 声明一个空的对象 {}; // 声明对象并设置属性 { name: 'xxx', age: 12, 'home-address':'xxx', users: [100,200,300,400,500,6000], child: {name:'obj2-child'}, getInfo: function(){ console.log('getInfo'); }, 'set^name': function() { console.log('set^name'); } };
属性名的命名在语法上没有任何要求,但是如果符合标识符规范,可以省略引号
-
使用Object函数
只能创建一个空对象,不能在创建的同时设置属性var obj = Object()
-
使用Object构造函数
只能创建一个空对象,不能在创建的同时设置属性var obj = new Object()
3. 属性的读写
读取不存在属性会自动得到undefined;给不存在的属性赋值表示添加该属性
-
使用点语法访问
对象.属性名
// 创建对象 var obj = { users: [100,200,300,400,500,6000], age: 12, getInfo: function(){ console.log('getInfo'); }, }; console.log(obj.age); //12 console.log(obj.getInfo); //[Function: getInfo] obj.getInfo() //getInfo obj.age += 10 console.log(obj.age); //22 obj.email = 'sssss@' console.log(obj.email); //sssss@
-
使用
[]
语法访问对象['属性名']
属性名不符合标识符规范和使用变量表示属性名时必须使用[]语法var obj = { users: [100, 200, 300, 400, 500, 6000], age: 12, 'home-address': '江苏', }; var prop = 'users' console.log(obj["home-address"]); // 浏览器会认为输出 对象obj中属性名是 prop 的属性 console.log(obj.prop); //undefined // 浏览器认为 prop 是变量,变量的值才是属性名 console.log(obj[prop]); //[ 100, 200, 300, 400, 500, 6000 ] // 浏览器会认为输出 对象obj中属性名是 prop 的属性 console.log(obj['prop']); //undefined
4. 遍历对象的属性
for(var i in 对象) {
i; // 属性名
对象[i]; // 属性值
}
5. 删除对象中的属性
使用一元运算符 delete
:
delete 对象.属性名;
delete 对象['属性名'];
6. 判断对象中是否存在某个属性
使用二元运算符 in
,表达式的结果是布尔值:
'属性名' in 对象;