在JavaScript中,对象是一种基本的数据结构,以键值对形式保存数据且数据没有顺序,它可以包含多种数据类型的属性和方法。
1. 创建对象的方法
- 字面量写法: let 自定义对象名 = {}
- 构造函数写法: let 自定义对象名 = new Object();
// 字面量写法
let person = {};
// 构造函数写法
let person = new Object();
(1)保存数据
- 在对象容器中,用来描述对象基本特征的都叫属性 (姓名、年龄、性别、肤色、身高、体重....),属性都是一个名称。
- 在对象容器中,用来描述对象具有什么功能或者对象会干什么事情叫方法 (会跳舞、会算卦...), 方法都是一个函数。
// 格式:
// 自定义属性名: 值
// 自定义方法名: function() {}
let person = {
name: 'Alice',
age: 30,
greet: function() {
console.log('你好');
}
};
// name和age就是属性,greet就是方法
(2)操作对象(增、删、改、查)
(a)获取对象中的值
- 获取属性的值:对象名['属性名'] 或者 对象名.属性名
- 获取对象中的方法:对象名['方法名']() 或者 对象名.方法名()
console.log(person['name']); // Alice
console.log(person.age); // 30
person['greet'](); // 你好
person.greet(); // 你好
(b)修改或新增对象,
- 修改或新增属性的值:对象名['属性名'] = 值 或者 对象名.属性名 = 值
-
修改或新增对象中的方法:对象['方法名'] = function(){} 或者 对象.方法名 = function(){}
person['name'] = '王五';
person.name= '王五';
console.log(person); // 王五
person['greet'] = function() {
console.log('正在喝水...');
}
person.greet= function() {
console.log('正在喝水...');
}
person.greet(); // 正在喝水...
二者区别:
- 如果对象中有对应的属性或方法,则表示修改。
- 如果对象中没有对应的属或方法,则表示添加。
(c)删除对象中的值
delete person.name;
delete person.greet;
console.log(person); // {age: 30}
2. 遍历对象的方法
由于对象容器中也可以同时保存多个值,所以也可以通过遍历对象获取对象中的每一个值。
for(let 变量 in 要被遍历的对象) {}
语法解释:
- for in 语法也是一个循环,循环次数会自动根据对象中的属性个数进行遍历。
- for in 语法中,变量就是对象中的属性名 (方法名)。
- 哪个对象要被遍历,那么就将当前对象写到 in 后面。
- 获取对象中的值,必须通过 对象名[变量] 获取。
let zs = {
uname: '张三',
age: 23,
myheight: 180,
}
// 遍历对象
for(let abc in zs) {
// abc变量保存了对象中的所有属性和方法
console.log(abc);
// uname
// age
// myheight
// 获取对象中的每一个属性对应的值
console.log(zs[abc]);
// 张三
// 23
// 180
}
遍历对象注意:
- 获取对象中的值必须通过 对象名[变量] 获取。
- 在遍历对象的时候,坚决不可以使用点的方式获取值,否则获取的结果是undefined。