희렌버핏
Object (객체) 메소드 본문
1. 메소드 종류
1.1. Object.keys() : 객체의 key 출력
1.2. Object.values() : 객체의 value 출력
1.3. Object.assigns(a,b) : b객체를 a객체에 복사 (원본 객체를 변환시킨다)
const defaults = {
author: '',
title: '',
year: 2017,
rating: null,
};
const book = {
author: 'Joe Morgan',
title: 'Simplifying JavaScript',
};
//defaults 객체 값 변경 (book을 defaults에 복사)
//book은 원본 데이터 유지
const updated = Object.assign(defaults, book);
//원본 그대로 둠
//새로운 객체 생성
const updated = Object.assign({}, defaults, book);
const updated = {...defaults, ...book};
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
2. 복사
2.1 얕은 복사
- 밖에서 동일하게 assign 한번만 하면 얕은 복사 수행
//중첩객체를 복사할 경우 얕은 복사를 하여 참조만 하기 때문에
//값을 바꾸면 모든 값이 동시에 바뀐다.
const defaultEmployee = {
name: {
first: '',
last: '',
},
years: 0
};
//1.assign 사용
const employee = Object.assign({},defaultEmployee);
//2.객체 펼침 연산자 사용
const employee = {...defaultEmployee}
employee.name.first = "Hee";
/*
// defaultEmployee
{
name: {
first: 'Hee',
last: '',
},
years: 0
};
// employee
{
name: {
first: 'Hee',
last: '',
},
years: 0
};
*/
2.2 깊은 복사
내부에서 깊은 복사를 할 객체를 지정해서 assign을 한번 더 수행할 경우 깊은 복사
const defaultEmployee = {
name: {
first: '',
last: '',
},
years: 0
};
//1. Object.assign 이용
const employee = Object.assign(
{},
defaultEmployee,
{
name: Object.assign({}, defaultEmployee.name)
}
);
//2. 객체 펼침 연산자 이용
const employee = {
...defaultEmployee,
name: {
...defaultEmployee.name
}
};
employee.name.first = "Hee";
/*
// defaultEmployee
{
name: {
first: '',
last: '',
},
years: 0
};
// employee
{
name: {
first: 'Hee',
last: '',
},
years: 0
};
*/
'Web > JavaScript' 카테고리의 다른 글
화살표 함수 (0) | 2020.04.20 |
---|---|
HTML/CSS/JS 올인원 패키지 (0) | 2019.09.26 |
git bash 명령어 정리 (0) | 2019.09.03 |
자바스크립트 - 객체 생성 (0) | 2019.08.21 |
java 환경변수 설명 (0) | 2019.08.13 |