前端 : 对象声明优化


        // 声明一个对象
        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}



posted @ 2023-12-13 23:37  逆水涵  阅读(22)  评论(0)    收藏  举报