희렌버핏

Object (객체) 메소드 본문

Web/JavaScript

Object (객체) 메소드

Oliviakim 2020. 3. 26. 16:37

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

 

Object.assign()

Object.assign() 메소드는 열거할 수 있는 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사할 때 사용합니다. 대상 객체를 반환합니다.

developer.mozilla.org

 

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