πŸ˜—μ΄λ²ˆμ—λŠ” ES6+μ—μ„œ 객체와 배열에 μΆ”κ°€λœ 문법을 μ•Œμ•„λ³΄μž.

단좕 속성λͺ…κ³Ό κ³„μ‚°λœ 속성λͺ…을 μ΄μš©ν•˜λ©΄ 객체와 배열을 μƒμ„±ν•˜κ³  μˆ˜μ •ν•˜λŠ” μ½”λ“œλ₯Ό μ‰½κ²Œ μž‘μ„±ν•  수 μžˆλ‹€. λ˜ν•œ, μ „κ°œ μ—°μ‚°μžμ™€ 비ꡬ쑰화 ν• λ‹Ή 덕뢄에 객체와 λ°°μ—΄μ˜ 속성값을 λ°–μœΌλ‘œ κΊΌλ‚΄λŠ” 방법이 ν•œκ²° μ‰¬μ›Œμ‘Œλ‹€.

단좕 속성λͺ…κ³Ό κ³„μ‚°λœ 속성λͺ…

1. 단좕 속성λͺ…

- 단좕 속성λͺ…은 객체 λ¦¬ν„°λŸ΄ μ½”λ“œλ₯Ό κ°„νŽΈν•˜κ²Œ μž‘μ„±ν•  λͺ©μ μœΌλ‘œ λ§Œλ“€μ–΄μ§„ 문법. 단좕 속성λͺ…을 μ‚¬μš©ν•˜λ©΄ κ°„νŽΈν•˜κ²Œ μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 

const name = "mike";
const obj = {
 age: 21,
 name,
 getName() { retrun this.name; },
 }

μƒˆλ‘œ λ§Œλ“€λ €λŠ” 객체의 속성값 일뢀가 이미 λ³€μˆ˜λ‘œ μ‘΄μž¬ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ λ³€μˆ˜ μ΄λ¦„λ§Œ 적어주면 λœλ‹€. μ΄λ•Œ 속성λͺ…은 λ³€μˆ˜ 이름과 κ°™μ•„μ§„λ‹€. 속성값이 ν•¨μˆ˜λ©΄ function ν‚€μ›Œλ“œ 없이 ν•¨μˆ˜λͺ…λ§Œ 적어도 λœλ‹€. μ΄λ•Œ 속성λͺ…은 ν•¨μˆ˜λͺ…κ³Ό κ°™μ•„μ§„λ‹€. 

 

function makePerson1(age,name) {
 return { age: age, name: name };
}
function makePerson2(age,name) {
 retrun { age, name };
}

첫번째 ν•¨μˆ˜ 단좕 속성λͺ…을 μ‚¬μš©ν•˜μ§€ μ•Šμ€ 경우이고, λ‘λ²ˆμ§Έ ν•¨μˆ˜κ°€ 단좕 속성λͺ…을 μ‚¬μš©ν•œ κ²½μš°λ‹€. λ³΄λ‹€μ‹œν”Ό 단좕 속성λͺ…을 μ‚¬μš©ν•œ κ²½μš°κ°€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ°λ„ νŽΈν•˜κ³  κ°„κ²°ν•˜κ³  가독성도 νŽΈν•˜λ‹€. 

 

2. κ³„μ‚°λœ 속성λͺ…

κ³„μ‚°λœ 속성λͺ…은 객체의 속성λͺ…을 λ™μ μœΌλ‘œ κ²°μ •ν•˜κΈ° μœ„ν•΄ λ‚˜μ˜¨ 문법. 

function makeObject1(key,value){
 const obj = {};
 obj[key] = value;
 return obj;
}
function makeObject2(key,value){
 return{ [key]:value};
}

κ³„μ‚°λœ 속성λͺ…을 μ‚¬μš©ν•˜λ©΄ 같은 ν•¨μˆ˜λ₯Ό 두 번째 ν•¨μˆ˜μ²˜λŸΌ κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ‹€.

 

μ „κ°œ μ—°μ‚°μžμ™€ 비ꡬ쑰화 ν• λ‹Ή

3. μ „κ°œ μ—°μ‚°μž

μ „κ°œ μ—°μ‚°μžλŠ” λ°°μ—΄μ΄λ‚˜ 객체의 λͺ¨λ“  속성을 풀어놓을 λ•Œ μ‚¬μš©ν•˜λŠ” 문법이닀. λ§€κ°œλ³€μˆ˜κ°€ λ§Žμ€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μœ μš©ν•˜λ‹€ !

Math.max(1,3,7,9); // 이 λ°©μ‹μœΌλ‘œλŠ” λ™μ μœΌλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό 전달할 수 μ—†λ‹€.

// μ „κ°œ μ—°μ‚°μž
const numbers = [1,3,7,9];
Math.max(...numbers);

μ „κ°œ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ λ™μ μœΌλ‘œ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό 전달할 수 μžˆλ‹€.

 

//λ°°μ—΄, 객체 생성
const arr1 = [1,2,3];
const obj1 = {age:23, name:'mike'}

//μ „κ°œμ—°μ‚°μž μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 객체와 λ°°μ—΄ 생성
const arr2 = [...arr1];
const obj2 = {...obj1};

//μ „κ°œ μ—°μ‚°μž μ‚¬μš©ν•΄μ„œ μƒˆλ‘œμš΄ 객체가 μƒμ„±λ˜μ—ˆκΈ° λ•Œλ¬Έμ—
//속성을 μΆ”κ°€ν•˜κ±°λ‚˜ 변경해도 μ›λž˜μ˜ 객체에 영ν–₯을 μ£Όμ§€ μ•ŠμŒ!
arr2.push(4);
obj2.age = 80;

λ°°μ—΄μ˜ 경우 μ „κ°œ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ κ·Έ μˆœμ„œκ°€ μœ μ§€λœλ‹€.

 

[1, ...[2,3],4]; // [1,2,3,4]
new Date(...[2020, 6, 24]); //2020λ…„ 6μ›” 24일

λ°°μ—΄ λ¦¬ν„°λŸ΄μ—μ„œ 쀑간에 μ „κ°œ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ „κ°œ μ—°μ‚°μž μ „ν›„μ˜ μˆœμ„œκ°€ μœ μ§€λœλ‹€. 두 번째 ν•¨μˆ˜λŠ” ν•¨μˆ˜μ˜ 인수λ₯Ό μ •μ˜λœ λ§€κ°œλ³€μˆ˜μ˜ μˆœμ„œλŒ€λ‘œ μž…λ ₯ν•΄μ•Ό ν•˜λ―€λ‘œ μˆœμ„œκ°€ μœ μ§€λ˜λŠ” μ „κ°œ μ—°μ‚°μžμ˜ μ„±μ§ˆμ„ μ΄μš©ν•˜κΈ° μ’‹λ‹€. 예λ₯Ό λ“€μ–΄ Date μƒμ„±μžμ˜ λ§€κ°œλ³€μˆ˜ μˆœμ„œλŒ€λ‘œ λ‚ μ§œ 데이터λ₯Ό κ΄€λ¦¬ν•˜λ©΄ Date 객체λ₯Ό μ‰½κ²Œ 생성할 수 μžˆλ‹€. μ „κ°œ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ„œλ‘œ λ‹€λ₯Έ 두 λ°°μ—΄μ΄λ‚˜ 객체λ₯Ό μ‰½κ²Œ ν•©μΉ  수 μžˆλ‹€.

 

const obj1 = {age:21, name:'mike'};
const obj2 = {hobby: 'soccer'};
const obj3 = {...obj1, ...obj2 };
console.log(obj3); // {age:21,name:'mike',hobby:'soccer'}

이 μ½”λ“œμ—μ„œ obj1κ³Ό obj2κ°€ 같은 μ΄λ¦„μ˜ 속성을 κ°€μ§€κ³  μžˆλ‹€λ©΄ ? es5κΉŒμ§€λŠ” μ€‘λ³΅λœ 속성λͺ…을 μ‚¬μš©ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν–ˆμ§€λ§Œ, es6λΆ€ν„°λŠ” μ€‘λ³΅λœ 속성λͺ…이 ν—ˆμš©λœλ‹€. μ€‘λ³΅λœ 속성λͺ… μ‚¬μš© μ‹œ μ΅œμ’… κ²°κ³ΌλŠ” λ§ˆμ§€λ§‰ 속성λͺ…μ˜ 값이 λ˜λ‹€. μ€‘λ³΅λœ 속성λͺ…κ³Ό μ „κ°œ μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λ©΄ 객체의 νŠΉμ • 속성값을 λ³€κ²½ν•  λ•Œ 이전 객체에 영ν–₯을 μ£Όμ§€ μ•Šκ³  μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€μ–΄ λ‚Ό 수 μžˆλ‹€. μ΄λŠ” λ³€μˆ˜λ₯Ό μˆ˜μ • λΆˆκ°€λŠ₯ν•˜λ„λ‘ 관리할 λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€.

 

4. λ°°μ—΄ 비ꡬ쑰화

λ°°μ—΄ λΉ„κ΅¬μ‘°ν™”λŠ” λ°°μ—΄μ˜ μ—¬λŸ¬ 속성값을 λ³€μˆ˜λ‘œ μ‰½κ²Œ ν• λ‹Ήν•  수 μžˆλŠ” 문법이닀. λ‹€μŒμ€ λ°°μ—΄ 비ꡬ쑰화λ₯Ό μ‚¬μš©ν•œ μ½”λ“œλ‹€.

const arr =[1,2];
const [a,b] = arr;
console.log(a); //1
console.log(b); //2

-------------------

let a, b;
[a,b] = [1,2];

λ°°μ—΄μ˜ 속성값이 μ™Όμͺ½μ˜ λ³€μˆ˜μ— μˆœμ„œλŒ€λ‘œ λ“€μ–΄κ°„λ‹€. μ΄λ ‡κ²Œ μƒˆλ‘œμš΄ λ³€μˆ˜λ‘œ ν• λ‹Ήν•  μˆ˜λ„ 있고 이미 μ‘΄μž¬ν•˜λŠ” λ³€μˆ˜μ— ν• λ‹Ήν•  μˆ˜λ„ μžˆλ‹€. 

 

const arr =[1,2,3];
const [a,, c] = arr;
console.log(a); //1
console.log(c);//3

그리고 λ°°μ—΄ 비ꡬ쑰화λ₯Ό μ‚¬μš©ν•˜λ©΄ 제3의 λ³€μˆ˜κ°€ ν•„μš”ν•˜μ§€ μ•Šμ„ 뿐만 μ•„λ‹ˆλΌ 단 ν•œμ€„μ˜ 짧은 μ½”λ“œλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€. λ°°μ—΄μ—μ„œ 일뢀 속성값을 λ¬΄μ‹œν•˜κ³  μ§„ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄ κ±΄λ„ˆλ›°λŠ” 개수만큼 μ‰Όν‘œλ₯Ό μž…λ ₯ν•˜λ©΄ λœλ‹€. 첫 번째 속성값은 λ³€μˆ˜ a에 ν• λ‹Ήλœλ‹€. 두 번째 속성값은 κ±΄λ„ˆλ›°κ³  μ„Έ 번째 속성값이 λ³€μˆ˜ c에 ν• λ‹Ήλœλ‹€. μ‰Όν‘œ κ°œμˆ˜λ§ŒνΌμ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ₯Ό μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ λ§Œλ“€ μˆ˜λ„ μžˆλ‹€.

 

const arr = [1,2,3];
const [first, ...rest1] = arr;
console.log(rest1);
const [a,b,c, ...rest2] = arr;
console.log(rest2); // []

λ°°μ—΄ 비ꡬ쑰화 μ‹œ λ§ˆμ§€λ§‰μ— ...와 ν•¨κ»˜ λ³€μˆ˜λͺ…을 μž…λ ₯ν•˜λ©΄ λ‚˜λ¨Έμ§€ λͺ¨λ“  속성값이 μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ λ§Œλ“€μ–΄μ§„λ‹€. λ‚˜λ¨Έμ§€ 속성값이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 빈 배열이 λ§Œλ“€μ–΄μ§„λ‹€.

 

5. 객체 비ꡬ쑰화

const obj1 = {age:21,name:'mike'}
const {age, name} = obj; // 객체 λΉ„κ΅¬μ‘°ν™”μ—μ„œλŠ” μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©
console.log(age); // 21
console.log(name); // mike

객체 λΉ„κ΅¬μ‘°ν™”λŠ” 객체의 μ—¬λŸ¬ 속성값을 λ³€μˆ˜λ‘œ μ‰½κ²Œ ν• λ‹Ή ν•  수 μžˆλŠ” 문법이닀. 객체 λΉ„κ΅¬μ‘°ν™”μ—μ„œλŠ” μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•œλ‹€. λ°°μ—΄ λΉ„κ΅¬μ‘°ν™”μ—μ„œλŠ” λ°°μ—΄μ˜ μˆœμ„œκ°€ μ€‘μš” ν–ˆμ§€λ§Œ 객체 λΉ„κ΅¬μ‘°ν™”μ—μ„œ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€. λ”°λΌμ„œ nameκ³Ό age의 μˆœμ„œλ₯Ό 바꿔도 κ²°κ³ΌλŠ” κ°™λ‹€. 단, λ°°μ—΄ λΉ„κ΅¬μ‘°ν™”μ—μ„œ μ™Όμͺ½ λ³€μˆ˜μ˜ 이름은 μž„μ˜λ‘œ κ²°μ •ν•  수 μžˆμ§€λ§Œ, 객체 λΉ„κ΅¬μ‘°ν™”μ—μ„œλŠ” κΈ°μ‘΄ 속성λͺ… κ·ΈλŒ€λ‘œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

+ Recent posts