About copy of reference type
const original = {
name: 'Fiesta',
car: {
color: 'blue',
},
}
const copied = Object.assign({}, original)
original.name = 'Focus'
original.car.color = 'yellow'
original // { name: 'Focus', car: { color: 'yellow' } }
copied // { name: 'Fiesta', car: { color: 'yellow' } }
각각 찍어보기
// original만 건드리고 copied는 안건드렸는데 copied의 color도 바꼈다!?? 왜냐면 객체라서
copied.name //Fiesta
copied.car.color //yellow
깊은 복사와 얕은 복사에 대한 심도있는 이야기
Copying Objects in JavaScript
Spread syntax
it('Rest Parameter는 인자의 일부에만 적용할 수도 있습니다.', function () {
// rest parameter는 항상 배열입니다.
function getAllParams(required1, required2, ...args) {
return [required1, required2, args];
}
expect(getAllParams(123)).to.deep.equal( [ 123, undefined, [] ] ); ///// 함수의 매개변수 위치에 받는 값이 없으면 undefined, 배열의 경우 [] 빈배열
function makePizza(dough, name, ...toppings) {
const order = `You ordered ${name} pizza with ${dough} dough and ${toppings.length} extra toppings!`;
return order;
}
expect(makePizza('original')).to.equal(`You ordered undefined pizza with original dough and 0 extra toppings!`);
expect(makePizza('thin', 'pepperoni')).to.equal(`You ordered pepperoni pizza with thin dough and 0 extra toppings!`);
expect(makePizza('napoli', 'meat', 'extra cheese', 'onion', 'bacon')).to.equal(`You ordered meat pizza with napoli dough and 3 extra toppings!`);
});
});