JavaScript

shorthand syntax / 객체분해 / rest spread syntax 예시

짱닭 2020. 10. 20. 19:34
반응형
const name = 'gildong'
const age = 19

const human = {
  name,
  age,
  level: 'Junior'
}


console.log(human) 
// { name: 'gildong', age: 19, level: 'Junior' }

객체에 변수 명을 key로 변수 값을 value로 할당할 수 있다.

객체분해

cosnt student = {name: 'gildong', major: 'computerScience'}

const { name } = student



{ name } === { name: 'gildong' } //true

객체의 특정 키값만 따로 임의의 객체에 저장할 수 있다.

rest / spread syntax 이용

const student = { name: 'gildong', major: '컴공' }
const { name, ...args } = student


name === 'gildong' //true
args === { major: '컴공' } //true
const student = { name: 'gildong', major: '컴공', lesson: '데이터구조', grade: 'B+' }

function getSummary({ name, lesson: course, grade }) {
  return `${name}님은 ${grade}의 성적으로 ${course}을 수강했습니다`
}


getSummary(student);
// gildong님은 B+의 성적으로 데이터구조을 수강했습니다
    const user = {
      name: '김코딩',
      company: {
        name: 'Code States',
        department: 'Development',
        role: {
          name: 'Software Engineer'
        }
      },
      age: 35
    }

    const changedUser = {
      ...user,
      name: '박해커',
      age: 20
    }

    const overwriteChanges = {
      name: '박해커',
      age: 20,
      ...user
    }

    const changedDepartment = {
      ...user,
      company: {
        ...user.company,
        department: 'Marketing'
      }
    }

- changedUser
spread syntax를 이용해서 ...user 로 user의 정보를 객체에 담는다,
name과 age를 재할당 하는 부분이 밑에 있으므로
...user 로 가져온 데이터에 name과 age를 덮어쓰게 된다.
(값이 변경됨)

-overwriteChanges
name과 age로 key와 value를 먼저 할당했지만,
...user로 다시 name과 age 를 덮어씌웠기 때문에
최종적으로 남는 데이터는 user의 데이터이다.
(user의 데이터와 같음)

-changedDepartment
...user로 user의 데이터를 모두 가져오나,
명시된 company는 재할당 된다.
company안에 ...user.company로 user의 company value와
같은 값이 들어온 뒤에,
department를 재할당 했기 때문에
department 값만 변경된다.

반응형