前端 : 对象声明优化
// 声明一个对象
const person = {
name: "zhangsan",
age: 20,
language: ['java', 'js', 'css']
}
console.log(Object.keys(person)) // ["name","age","language"]
console.log(Object.values(person)) // ["zhangsan",20 Array[2]]
console.log(Object.entries(person))
const tagr = { a: 1 };
const s1 = { b: 2 };
const s2 = { c: 3 };
// 合并三个对象
Object.assign(tagr, s1, s2);
console.log(tagr); // {a:1,b:2,c:3}
const age = 23;
const name = "张三";
const person2 = { name: name, age: age };
console.log(person2); // {name:张三,age:23}
// 简写 . 如果属性名,以及属性的变量名都是一样的,可以用下面的写法
const person3 = { name, age }
console.log(person3); // {name:张三,age:23}
// 对象函数简写
const person4 = {
name: "zhangsan",
eat: function fun(food) {
console.log(this.name + " 在吃 " + food); // {name:张三,age:23}
},
// 这里箭头函数this 没办法获取到当前对象的属性值 -- 箭头函数this不能使用
eat2: food => console.log(this.name + " 在吃 " + food), // 在吃 大蒜
// 这种使用箭头函数需要是当前对象 . 属性
eat3: food => console.log(person4.name + " 在吃 " + food), //zhangsan 在吃 玻璃
// 直接写一个函数的方式实现
eat4(food) {
console.log(person4.name + " 在吃 " + food) //zhangsan 在吃 姐姐
}
}
person4.eat("香蕉");
person4.eat2("大蒜");
person4.eat3("玻璃");
person4.eat4("姐姐")
// 扩展运算符
// 1. 拷贝对象(深拷贝)
let p1 = { name: "李四", age: 22 }
let p2 = { ...p1 }
console.log(p2); // {name:"李四",age:22}
// 2.合并对象
let name1 = { name: "王五" };
let age1 = { age: 33 };
let p3 = { name: "555" }; //在合并对象之前给属性设置一个值,数据会被后一个对象的属性值给覆盖
p3 = { ...name1, ...age1 }
console.log(p3) // {name: '王五', age: 33}

浙公网安备 33010602011771号