Template Literals | Destructuring | class
- -
๋ชจ๋ ํฌ์คํ ์ ์ธํ๋ฐ ECMAScript6: ๋น ๋ฅด๊ฒ ๋ฐฐ์ฐ๋ ES6 ์คํฌ๊ณผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋จ ์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "๊นํํ"๋์ ์๋ฃ์ ๋๋ค.
์์ ์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ํ ๊ฒ์ ๋๋ค.
www.inflearn.com/course/es6-ecmascript-6
1. Template Literals
# ํํ์๊ณผ ํ
ํ๋ฆฟ ๋ฌธ์์ด
- ๋ฐฑํฑ(backtick) ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
- ํ ํ๋ฆฟ ๋ฌธ์์ด ํํ์์ ์ฒ๋ฆฌํ๋ค.(์ด๋ฅผ ํตํด ๋ฌธ์์ด์ ์ธ๋ถ ๋ณ์๋ฅผ ์ ๋ ฅํ ์ ์๋ค.)
ํ ํ๋ฆฟ ๋ฌธ์์ด์ด๋ผ๋ ๊ธฐ๋ฅ์ ๋์ ํ์ฌ,
์ฑ๊ธ์ฟผํ ์ด์ด์ ๋๋ ๋๋ธ ์ฟผํ ์ด์ ์ด ์๋ ๋ฐฑํฑ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ํํ ํ๋ ๋ฐฉ์์ "ํ ํ๋ฆฟ ๋ฌธ์์ด ํํ์"์ด๋ผ๊ณ ํ๋ค.
์์ ๊ฐ์ ํ๊ธฐ๋ฒ์ผ๋ก ๋ฉํฐ๋ผ์ธ ์คํธ๋ง์ ๋ง๋ค ์ ์๋ค. ($๋ ํํ์ ์ฌ์ฉ์. ํํ์์ผ๋ก ๊ณ์ฐ์์ ๋ฃ์ ์๋ ์๋ค.)
ํํ์์ ์ฌ์ฉํ๋ฉด, ์์ 6๋ฒ ๋ผ์ธ๊ณผ ๊ฐ์ด ํจ์๋ฅผ ํธ์ถ ํ ์๋ ์๋ค.
2. Destructuring
#๋น๊ตฌ์กฐํ ํ ๋น
- ๊ตฌ์กฐํ๋ object๋ array๋ฅผ ๋น๊ตฌ์กฐํ ํ์ฌ ๋ณ์์ ํ ๋น
๊ฐ์ฒด ๋๋ ๋ฐฐ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ๊ฐ๊ฐ์ ๋ณ์์ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ jsonํ์์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ฝ๊ฒ ๋ณ์์ ํ ๋น ํ ์ ์๋ค.
let data = [{
const : 1,
list: [{
name : ["jack","paul"],
group : "sports"
}]
}]
let [{count, list: [{name,group}]}] = data;
console.log(`
count : ${count}
group : ${group}
`)
let ์ ์ธ์ ์์ ๋ฐฐ์ด ํํ์์ผ๋ก ๋์ผํ๊ฒ ๋ฐฐ์น๋ง ํด์ฃผ๋ฉด ๋๋ค.(๊ฐ์ฒด๋ ๋ง์ฐฌ๊ฐ์ง์)
์๋ ์ฝ๋๋ ๋ณด๋ฉด Productobject์์ ์ธ์๋ก ๊ฐ์ฒด ํํ์์ ๋ฐ๊ณ ์๋ค. ํจ์์์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ ๋ ๋น ๊ตฌ์กฐํ ํ ๋น์ ํตํด ์ฌ๋ฌ ๊ตฌ์กฐ๋ก ๋ฐ์ ์ ์๋ค.
function productObject({name, price, color}) {
return {
productName : "This product name : " + name,
addToCart(){
console.log(name + "is added");
},
detailView(){
console.log(`
${productName}
price : ${price}
color : ${color}
`);
}
};
}
var {productName, addToCart, detailView} = productObject({name:"apple", price:199, color:"silver"});
addToCart();
detailView();
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
3. class
# ํด๋์ค(: class)
๊ธฐ์กด์๋ ๊ฐ์ฒด์งํฅ์ ๊ตฌํํ๋ ค๊ณ ํ ๋ function์ ์์ฑ์๋ก ์ฌ์ฉํ์๋ค. ํํ๋ ฅ์ด ๋จ์ด์ง๋ค ๋ณด๋ ์ฝ๋์ ๋ณต์ก๋๊ฐ ์ปค์ก๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด classํค์๋๊ฐ ์ถ๊ฐ ๋์๋ค. ์ด๋ก ์ธํด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ํธ๋ฆฌํด์ก๋ค.
์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด classํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค๋ฅผ ์ ์ํ์๊ณ ์์ฑ์ ํจ์๋ constructor๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ํ์๊ณ ์ด๋ ํด๋์ค๊ฐ ์์ฑ๋ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก
ํธ์ถ์ด ๋๋ ํจ์์ด๋ค.
class Lang {
constructor(name){
this.name = name;
}
getName(){
return this.name;
}
}
let lang = new Lang("Language");
console.log("Lang.getName();" + lang.getName());
๋ค์๊ณผ ๊ฐ์ด! ํด๋์ค๋ newํค์๋๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ ๋ฌํ ์ธ์ Language ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋์ด name์ ์ด๊ธฐํ ํ์์ผ๋ฉฐ, getName๋ฉ์๋๋ฅผ ํตํด Language๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
# class ์์
- extends ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ค์ฒ๋ผ ์์์ด ๊ฐ๋ฅ.
์๋ ์ฝ๋๋ฅผ ๋ณด์
class Lang {
constructor(name){
this.name = name;
}
getName(){
return this.name;
}
}
let lang = new Lang("Language");
console.log("lang.getName();"+ lang.getName());
class Javascript extends Lang{
constructor(name) {
super(name);
}
}
let js = new JavaScript("JavaScript");
console.log("js instanceof JavaScript : " + (js instanceof JavaScript));
console.log("js instanceof Lang : " + (js instanceof Lang));
console.log("js.getName():" + js.getName());
์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ํด๋์ค๋ฅผ ์ด๊ธฐํ ํ๋ ค๋ฉด ๋จผ์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํ๋ฏ๋ก, super๋ฉ์๋๋ฅผ ํตํด ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํ๋ค.
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด ์์ ์์ ์ ์ ์๋ ๊ฒ์ :
- js๋ javascript์์ฑ์๋ก ์์ฑ๋ instance ์ด๋ฉด์,
javascript๊ฐ Lang์ ์์ ํด๋์ค ์ด๋ฏ๋ก "Lang์ ์ธ์คํด์ค ์ฌ๋ถ๊ฐ true๊ฐ ๋์จ๊ฒ์ ํ์ธ ํ ์ ์๋ค"๋ผ๋ ๊ฒ.
- ๋ํ ๋ถ๋ชจ ํด๋์ค์ ๋ณ์์ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ ์ํ์ง ์์ ํจ์๊น์ง๋ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
#์ ๋ฆฌ
- class ํจ์๋ ๋ด๋ถ์ ์ผ๋ก ํจ์์ฒ๋ผ ๋์ํ๋ค.
- ํด๋์ค์ ์์์ผ๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ์๋ค.
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Iterator & for-of | Symbol | [Symbol.iterator()] (0) | 2021.02.15 |
---|---|
Arrow Function & this | IIFE | Default Parameter (0) | 2021.02.15 |
ECMAScript6 | ES6 | let & const | Block-scope | Temprol Dead Zone (0) | 2021.02.15 |
[Js] ํ์ฉ | youtube ์ฌ์์๊ฐ ๊ตฌํ๊ธฐ | ์ํ์ฝ๋ฉ javascript (0) | 2021.02.10 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค