[2주차] 불변 객체를 만드는 방법

aekyoung kwon·2022년 11월 18일
0

불변 객체(immutable)란? '변하지 않는 객체'
객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체를 말한다.

[장점]
: 이해하기 쉽고 안정적인 서비스 개발에 도움이 된다.
: map, set, cache에 쓰기에 적절하다.
: thread-safe(멀티 스레드 프로그래밍) 하다?
: 불변 객체를 필드로 쓰면 방어적 복사를 할 필요가 없다.

불변객체를 만드는 방법으로
const와 Object.freeze()메소드를 사용하여 만들 수 있다.

const키워드는 변수를 상수로 선언할 수 있다. 일반적으로 상수로 선언된 변수는 값을 바꿀 수가 없다.

    const animal = {name:'콩자', age: 10 }
    animal.name = '사자'
    console.log(animal)
    //{name: '사자', age: 10} 출력

const 키워드로 선언된 animal변수에는
객체의 재할당은 불가능하지만 객체의 속성은 변경이 가능하다.

Object.freeze()
객체를 동결하기 위한 메소드다.

    let animal = {name:'콩자', age: 10 }
    Object.freeze(animal)
    animal.name = '사자'
    console.log(animal)
    //{name: '콩자', age: 10} 출력

    let animal = { name:'콩자', age: 10 }
    Object.freeze(animal)
    animal = {hobby:'축구'}
    console.log(animal)
    //{hobby: '축구'}

객체는 객체의 속성을 변경하는 시도는 불가능하다.
동결된 객체를 반환해주지만 객체의 재할당은 가능하다.

Object.assign()
타켓을 지정한 객체로 다른 객체의 속성을 복제하는 메소드이다.

    function fn(person){
        person = Object.assign({}, person)
        person.name = 'lee'
        return person
    }
    const o1 = {name:'kim'}
    const o2 = fn(o1)
    console.log(o1, o2)
	// {name: 'kim'} {name: 'lee'} 출력 
	// 원본은 그대로 유지하고 복제본을 만들어 출력한다. 
profile
멍텅구리

0개의 댓글