참조형 복사하기 (Reference Type Copy)
// 참조형 복사하기 (Reference Type Copy)
let numbers1 = [1, 2, 3];
let numbers2 = numbers1;
numbers.push(4); // [1, 2, 3, 4]
console.log(numbers1); // [1, 2, 3, 4]
console.log(numbers2); // [1, 2, 3, 4]
let numbers1 = [1, 2, 3];
let numbers2 = numbers1.slice();
numbers2.push(4);
console.log(numbers1); // [1, 2, 3]
console.log(numbers2); // [1, 2, 3, 4]
let course1 = {
title: '파이썬 프로그래밍 기초',
language: 'Python'
};
let course2 = course1;
course2.title = '알고리즘의 정석';
console.log(course1); // title: '알고리즘의 정석', language: 'Python'
console.log(course2); // title: '알고리즘의 정석', language: 'Python'
let course1 = {
title: '파이썬 프로그래밍 기초',
language: 'Python'
};
let course2 = Object.assign({}, course1);
course2.title = '알고리즘의 정석';
console.log(course1); // title: '파이썬 프로그래밍 기초', language: 'Python'
console.log(course2); // title: '알고리즘의 정석', language: 'Python'
let course1 = {
title: '파이썬 프로그래밍 기초',
language: 'Python'
};
let course2 = {};
for (let key in course1) {
course2[key] = course1[key];
}
course2.title = '자료 구조';
console.log(course1); // title: "파이썬 프로그래밍 기초', language: 'Python'
console.log(course2); // title: "자료 구조', language: 'Python'
function cloneObject(object) {
let temp = {};
for (let key in object) {
temp[key] = object[key];
}
return temp;
};
let course1 = {
title: '파이썬 프로그래밍 기초',
language: 'Python'
prerequisite: []
};
let course2 = cloneObject(course1);
course2.title = '알고리즘의 정석';
course2.prerequisite.push('파이썬 프로그래밍 기초');
console.log(course1); // title: "파이썬 프로그래밍 기초', language: 'Python', prerequisite: Array(1)
console.log(course2); // title: "알고리즘의 정석', language: 'Python', prerequisite: Array(1)
실습
재훈이는 요즘 커피 공부에 빠져 있습니다.
에스프레소를 기본으로 하는 커피 메뉴의 레시피를 배웠는데요.
아메리카노는 에스프레소에 물을 더한 메뉴이고, 카페라떼는 에스프레소에 우유를 더한 메뉴라고 배웠습니다.
그래서 이 레시피를 배열로 한 번 정리해보려고 아래와 같이 코드를 작성했습니다.
let espresso = ['espresso'];
let americano = espresso;
americano.push('water');
let caffeLatte = espresso;
caffeLatte.push('milk');
// 테스트 코드
console.log(espresso);
console.log(americano);
console.log(caffeLatte);
나름대로 효율적으로 코드를 작성했다고 생각했는데, 막상 코드를 실행해보니 이상한 결과가 나왔는데요.
[ 'espresso', 'water', 'milk' ]
[ 'espresso', 'water', 'milk' ]
[ 'espresso', 'water', 'milk' ]
재훈이가 겪은 문제를 해결하면서, 카페모카(caffeMocha)와 바닐라라떼(vanillaLatte)레시피도 만들어주세요.
모카는 에스프레소에 우유와 초코 시럽을, 바닐라라떼는 에스프레소에, 우유와 바닐라시럽을 더한 메뉴입니다.
let espresso = ['espresso'];
let americano = espresso.slice();
americano.push('water');
let caffeLatte = espresso.slice();
caffeLatte.push('milk');
// 여기에 caffeMocha와 vanillaLatte 레시피를 만들어 주세요
let caffeMocha = caffeLatte.slice();
caffeMocha.push('chocolateSyrup');
let vanillaLatte = caffeLatte.slice();
vanillaLatte.push('vanillaSyrup');
// 테스트 코드
console.log(espresso);
console.log(americano);
console.log(caffeLatte);
console.log(caffeMocha);
console.log(vanillaLatte);
실습 결과
[ 'espresso' ]
[ 'espresso', 'water' ]
[ 'espresso', 'milk' ]
[ 'espresso', 'milk', 'chocolateSyrup' ]
[ 'espresso', 'milk', 'vanillaSyrup' ]
'Codeit > JavaScript' 카테고리의 다른 글
| 모던 자바스크립트 (0) | 2024.08.08 |
|---|---|
| const, 변수와 상수 사이 (0) | 2024.08.08 |
| 기본형과 참조형 (0) | 2024.08.08 |
| 문자열 심화 (2) | 2024.08.08 |
| 다양한 숫자 표기법 (0) | 2024.08.07 |