对象是什么?此对象非彼对象,虽然程序员是很想能自己定义一个“对象”,但是对象实际是一种复杂数据类型。
对象作用:以键值对方式存储多个数据。
对象和数组异同点:
相同点:都是复杂数据类型,都可以存储多个数据。
不同点:存储方式不同。
数组:有序存储。
对象:无序存储(键值对)。
//1.使用基本数据类型
let name ='zw'
let age = 19
let sex = 'nan'
//好处阅读性高
//弊端:沉余
// 2.使用复杂数据类型-数组
let arr = ['班长',18,'男']
console.log(arr);
// 好处:一个变量存储多个数据// 弊端:阅读性不高
// 3.使用对象
let obj = { name:'班长',age:38, sex:'男'}
对象的语法:
对象的声明
let 对象名={
属性名:属性值,
属性名:属性值,
}
对象的取值:对象名.属性名
面对对象的属性值不同取值语法也不同如下例子的代码注释
let obj = {
name: '王子',
age: 19,
gfs: ['芭芭拉', '温蒂', '可莉'],
sayhi: function () {
console.log(111);
},
}
console.log(obj);
console.log(obj.name);
console.log(obj.age);
console.log(obj.gfs);
console.log(obj.gfs[2]);
console.log(obj.sayHi);
console.log(obj.sayHi());
// 细节:对象中的属性值是什么数据类型,取出来的时候就可以使用这个类型的所有语法。
// 如:对象中的属性值是 数组,则可以:对象名.属性名[下标]
// 如:对象中的属性值是 函数,则可以:对象名.属性名()
对象的操作:
let obj ={
name:'秀吉',
age:19,
sex:'不男不女',
}
// 1.查询语法(属性名存在,获取属性值;属性名不存在,获取underfined)
// a.点语法 对象名.属性名
// b.[]语法 对象名['属性名']
// a.点语法 对象名.属性名
console.log(obj.name );//班长
console.log(obj.age );//18
console.log(obj.sex );//男
console.log(obj.country);//undefined
// b.[]语法对象名['属性名']
console.log(obj['sex'] );//男
// 2.修改属性
// a.对象名.属性名 = 值
// b.对象名['属性名'] = 值
obj.name ='李四';
obj['age'] = 20;
console.log(obj);//{name:'李四',age: 20,sex:'男'}
// 3.新增属性
// a.如果对已经存在的属性赋值,则是修改
// b.如果对不存在的属性赋值,则是新增
obj.hobby ="学习"
console.log(obj);//{name:'李四",age:20,sex:"男',hobby:'学习'}
// 4.删除对象属性
// delete 对象名.属性名
delete obj.age
console.log(obj);//{name:'李四",sex:'男',hobby:'学习'}
以上简述了对象的增删改查的语法。
对象的遍历:
//1.遍历数组:for循环
// for(let i= 0; i<arr.length;i++){arr[i]}
//2.遍历对象:特殊的for-in循环(专门用于遍历对象)
//for(let key in 对象名){对象名[key]}
let obj = {
name:'豆包',
age:18,
sex:'男',
hobby:'干饭'
}
for(let key in obj){
console.log(key);
console.log(obj[key]);
}
</script>
对象的遍历有三种方式
1.利用Map对象
首先通过Object.entries将对象转为数组格式,再转为Map对象。利用Map对象的遍历方法即可遍历对象
2.for...in
通过属性进行遍历,也就是枚举
3.for...of
先获取属性名的数组,通过遍历属性名遍历对象