[Level up] 데이터(5) - 객체

일상 코딩·2022년 3월 29일
0

JavaScript

목록 보기
35/53
post-thumbnail

01.정적(Static) 메소드

  • prototype이 붙어 있지 않은 메서드는 정적 (static) 메서드다.
  • 정적 메서드는 {}.assign(); 이거 안됨.
  • prototype이 지원되는 메소드는 [].reverse() 이거 됨.

02.Object.assign()

  • assign(): 모든 출처 객체가 대상 객체로 복사되어서 대상 객체가 반환 됩니다.
  • assign(대상 객체, 출처 객체);
const userAge = {
  // key: value
  name: 'Heropy'
  age: 33
}
const userEmail = {
  name: 'Heropy'
  email: 'wlsdnjs156@naver.com'
}

const target = Object.assign(userAge, userEmail) // assign(대상 객체, 출처 객체);
console.log(target)
// {name: 'Heropy', age: 24, email: 'wlsdnjs156@naver.com'}
console.log(userAge)
// {name: 'Heropy', age: 24, email: 'wlsdnjs156@naver.com'}
console.log(target === userAge)
// true, 내용이 같아서 true가 반환되는 것이 아니라
// 반환된 객체 데이터 target 변수와 userAge(대상 객체)가 가리키는 메모리 주소가 일치하기 때문!

const a = { k: 123 }
const b = { k: 123 }
console.log(a === b)
//  false, 내용은 같지만 가리키는 메모리 주소가 일치하지 않음

  • 원본에 변화 없이 assign() 메소드 사용법
const userAge = {
  // key: value
  name: 'Heropy'
  age: 24
}
const userEmail = {
  name: 'Heropy'
  email: 'wlsdnjs156@naver.com'
}

const target = Object.assign({}, userAge, userEmail) // assign(대상 객체, 출처 객체, 출처 객체);
// 대상 객체를 {} 빈 객체로 설정하여 원본에 변화 없이 메소드 사용!
console.log(target)
// {name: 'Heropy', age: 33, email: 'hanei100@naver.com'}
console.log(userAge)
// {name: 'Heropy', age: 33}
console.log(target === userAge)
// 값: false

03.Object.keys()

  • 객체 데이터의 property의 이름(key)만을 추출하여 배열 데이터로 반환
const user = {
  // key: value
  name: 'Heropy'
  age: 24,
  email: 'wlsdnjs156@naver.com'
}

const keys = Object.keys(user)
console.log(keys) // ['name', 'age', 'email']

// Key값 인덱싱 방법
console.log(user['email']) // wlsdnjs156@naver.com
// 배열은 index 번호로 인덱싱을 하지만 객체는 키값으로 인덱싱을 한다.

const values = keys.map(key => user[key])
// 객체 데이터의 value 값들만 추출해서 배열 형태로 반환한다.
console.log(values) // ['Heropy', 24, 'wlsdnjs156@naver.com']
profile
일취월장(日就月將) - 「날마다 달마다 성장하고 발전한다.」

0개의 댓글