250x250
Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

진스

객체 메소드 Obejct.~() 본문

JavaScript

객체 메소드 Obejct.~()

입방정 2022. 5. 17. 16:34
728x90

Object.assign() 객체 복제

Object.keys() 키를 배열로 반환

Object.values() 값을 배열로 반환

Object.entries() 키와값을 배열로 반환

Object.fromEntries() 키/값 배열을 객체로 반환

 


Object.assign()

객체복사1. 바로 대입 해보기 ex) const userClone = user

const user={
  name:'jin',
  age:30
}
const userClone = user // 이러면 원본까지 수정이 됨
console.log('원본',user) //복사 확인
userClone.age = 40 // 복사본 수정함
console.log('원본',user,'복제본',userClone) //원본,복제본 둘다 age : 40 수정됨

하나의 객체를 두 변수가 같이 접근하여 원본도 같이 수정됨

 

객체복사2. Object.assign( target, source )

const user={
  name:'jin',
  age:30
}
const userObject = Object.assign({},user) //빈객체를 만들어 초기설정후 여기에 user를 복제
console.log('원본',user,'복제',userObject) //복제됨 확인
userObject.age=40 // 복제본에 일부 수정
console.log('원본',user,'복제',userObject) // 원본.age:30  복제.age:40 서로다름

원본은 그대로 복제본만 수정됨

 

Object.assign의 초기화 및 객체 합치기

const user={
  name:'jin',
  age:30
}
const userObject = Object.assign({gender:'female'},user) // 초기값 gender:'female와 user복제본 내용이 다들어감                                      

const info1 = {job:'money'}
const info2 = {local:'seoul'}
Object.assign(user,info1,info2) // user객체에 info1,info2  두개 이상의 객체를 추가할수 있음

Object.keys()

키를 배열로 반환

const user={
  name:'jin',
  age:30
}
const userKey =  Object.keys(user)
console.log(userKey) //["name","age"]

Object.values()

값을 배열로 반환

 

const user={
  name:'jin',
  age:30
}
const userValues =  Object.values(user)
console.log(userValues) //["jin",30]

Object.entries()

값와 값을 배열로 반환

 

const user={
  name:'jin',
  age:30
}
const userEntries =  Object.entries(user)
console.log(userEntries) //["name","jin"],["age",30]

Object.fromEntries()

키:값 배열을 객체로

const user=[
 ["name","jin"],
 ["age",30]
]
const userFromEntries =  Object.fromEntries(user)
console.log(userFromEntries) // {
                             //  "name": "jin",
                             //  "age": 30
                             // }

 

728x90
Comments