六、对象
万物皆对象
创建对象
1、字面量创建
let obj = {};
2、构造函数
let obj = new Object();
对象初始化
键:属性名 值:属性值
变量称为属性;函数称为方法
let obj = {
属性名1 : 属性值1 ,
属性名2 : 属性值2 ,
..
属性名n : 属性值n
}
增删改查
1、增加/修改
对象名.属性名=xxx;
对象名['属性名']=xxx;
因为属性名是一个字符串
对没有的属性名,对象会自动创建一个然后输出undefined,然后立马销毁
Symbol
功能:避免在新增时,更改原有的属性或方法,可以使用Symbol(唯一性)来创建
2、查找
console.log(对象名.属性名);
console.log(对象名['属性名']);
3、删除
delete 对象名.属性名;
删除方法也不需要加小括号;
遍历
let computer = {
name: `ASUS`,
size: 15.6,
type: `游戏本`,
weight: `2kg`,
temp: [1, 2, 3],
listen: function () {
console.log(`听歌`);
},
internet: function () {
console.log(`上网`);
}
}
//遍历属性名
for (let index of Object.keys(computer)){
console.log(index);
}
//遍历属性值
for (let items of Object.values(computer)){
console.log(items);//如果是方法会输出[Function: listen]
}
//遍历键值对,每一对用数组显示
for (let items of Object.entries(computer)){
console.log(items);
}
this
this在对象中,代表当前对象
let phone = {
name: 'HW',
size: 5.0,
price: 923,
huafei:50,
call: function (){
console.log('打电话');
this.huafei--;
},
add:function(){
console.log('充话费');
this.huafei++;
}
}
phone.call();
console.log(phone.huafei);//49
对象的解构
当左侧需要的属性名与自己定义的变量名一致时,可以缩写为一个名字
let obj={
name:'lyw',age:15,gender:true
}
//实际为
let {name:name,age:age}=obj;
//缩写为
let {name,age}=obj;
console.log(name,age);//lyw 15
//如果不一致如下
// let {name:f71,age:f72}=obj;
// console.log(f71,f72);//1yw 15
//常用实例 参数顺序可以不考虑
function jieshao({age,name,gender}){
gender = gender ? '男性' : '女性';
console.log(`我叫${name},今年${age},${gender}`);
}
jieshao(obj);//我叫lyw,今年15,男性