ABOUT ME

In Manus Tuas Pater, Commendo Spiritum Meum

Today
Yesterday
Total
  • 객체 메소드
    JavaScript 2022. 9. 30. 02:11

    Object.assign()

    // Object.assign() // 객체 복제
    
    const user = {
        name : 'Mike',
        age : 30,
        [1+4]:5, // 이렇게 식 자체를 넣는 것도 가능하다.
        ["안녕"+"하세요"] : "Hello"
    }
    
    const cloneUser = user; // 이러면 복제가 될까? 안된다!
    //user 변수에는 객체 자체가 들어가 있는게 아니다. 
    //객체가 저장되어 있는 메모리의 주소, 객체에 대한 참조값이 저장된다.
    //즉, 이런 클론유저는 객체가 복사되는게 아니라 참조값만 복사되는 거다.
    
    console.log(user.name) // 'Mike' 
    cloneUser.name = 'Tom';
    console.log(user.name) // 'Tom' // 아래에서는 user.name도 바뀐다!
    //하나의 객체를 두 변수가 접근하고 있는 것이다.
    
    const newUser = Object.assign({}, user) 
    // 첫번째 빈 객체는 초기값, 두번째 매개변수부터 들어오는 객체들이 초기값에 병합된다.
    // 빈객체에 user가 들어오므로, 복제되는 거지.
    
    newUser.name = 'Anakin'
    console.log(user.name); // Tom 
    // 이제는 newUser의 이름을 바꿔도 원래 user이름에 변화가 없다.
    
    const cloneUser2 = Object.assign({gender:'male'},user); // 성별값이 있는 객체가 user를 병합한다.
    //name, age 까지 총 5개의 property를 가지게 된다.
    console.log(cloneUser2) 
    //{ '5': 5, gender: 'male', name: 'Tom', age: 30, '안녕하세요': 'Hello' }
    
    const cloneUser3 = Object.assign({name:'Luke'},user); //만약 병합을 하는데, key 가 같다면 어떻게 될까?
    console.log(cloneUser3)
    // { '5': 5, name: 'Tom', age: 30, '안녕하세요': 'Hello' } 걍 덮어씌운다.
    // 여러 객체 병합 가능
    const user = {
        name : 'Mike'   
    }
    
    const info1 = {
        age : 30,
    }
    
    const info2 = {
        gender : 'shemale'
    }
    
    const Anakin = Object.assign(user, info1, info2) // user에 info1, info2 병합
    console.log(Anakin) // { name: 'Mike', age: 30, gender: 'shemale' }

     

     


    Object.keys()    Object.values()    Object.entries()    Object.fromEntries(배열)

    const user = {
        name : 'Mike',
        age : 30,
        gender : 'male',
    }
    
    console.log(Object.keys(user)) // Object.keys 메서드는 객체 property의 key를 배열로 반환한다. 
    //[ 'name', 'age', 'gender' ] 
    
    console.log(Object.values(user)) // 반대로. Object.values 메서드는 value를 배열로 반환한다.
    //[ 'Mike', 30, 'male' ]
    
    console.log(Object.entries(user)) // key value 배열 반환
    //[ [ 'name', 'Mike' ], [ 'age', 30 ], [ 'gender', 'male' ] ]
    
    
    const arr = [
        ["name", 'Mike'],
        ["age",  30],
        ["gender", 'male'],
    ]
    console.log(Object.fromEntries(arr)) // 반대로, key value 배열을 객체로
    // { name: 'Mike', age: 30, gender: 'male' }
    
    const arr2 = [
        ['mon', '월'],
        ['tue', '화'],
    ];
    
    const result = Object.fromEntries(arr2);
    
    console.log(result); // { mon: '월', tue: '화' }

    어떤 key가 들어올지 모르는 객체를 만들어야 할 때

    // 어떤게 key 가 될지 모르는 객체를 만들 때 유효하다!!!
    
    function makeObj(key, val){
        return {
            [key] : val
        }
    }
    
    const obj = makeObj('나이', 33); // 요렇게 위의 함수를 사용할 수 있다.
    console.log(obj) // { '나이': 33 }
    
    const obj2 = makeObj('이름', 33); // 요렇게 위의 함수를 사용할 수 있다.
    console.log(obj2) // { '이름': 33 }

    'JavaScript' 카테고리의 다른 글

    프로미스  (0) 2022.10.05
    심볼  (0) 2022.09.30
    계산된 프로퍼티 computed property  (0) 2022.09.30
    생성자 함수  (0) 2022.09.30
    문자열과 숫자에 접근하는 방법들3 : 정규표현식  (0) 2022.09.28
Designed by Tistory.