💡 코드는 직접 읽고 해석하면서 이해해야한다.
es6란? es5는 2009년에 나왔고 2015년에 새로 사양 되어 es6가 나왔다.
es6로 화살표 함수 ,템플릿 리터럴, 기본 매개 변수, 비구조화 할당, 모듈 을 쉽게 사용할 수 있게 되었다.
그렇다면 JS와의 차이는? JS는 ECMAScript의 사양을 준수하는 범용 스크립트 언어이다.
const player = {
name: "Lala la",
club: "LA lalla",
address: {
city: "Los Angeless"
}
};
console.log(player.address.city); //Los Angeless 출력
const {
name,
club,
address: { city }
} = player;
console.log(name); //Lala la 출력
console.log(`Hello ${name}`); //Hello Lala la 출력
속성을 해체
하여 그 값을 개별 변수에
담을 수 있는 JS표현식.player 객체
를 정의하여 name, club, adress, city 속성에 값을
주었다. city
를 출력 하기 위해서는 player.address.city
까지 길게 쳐야한다.const로 정의
하여 속성이름만 적는다.= 객체이름
을 붙여서 타입을 설정한다.plyer.adress.city
까지 적지 않고 바로 city
를 출력 할 수있다. function foodShopping(food = "someting") { //여기가 기본매개변수 설정하는거
return `I'm going to buy ${food} from the grocery shop`;
}
console.log(foodShopping()); //I'm going to buy someting from the grocery shop출력
console.log(foodShopping("milk")); //I'm going to buy milk from the grocery shop출력
위의 코드가 DefaultParameter을 작성 한 것이다. 그래서 콘솔에 출력할때 인자를 아무것도 보내지 않으면, 기본값인 something
이 출력될 수 있다.
기본값을 설정하지 않으면 무엇을 출력할까?
function foodShoppingg(food) {
return `I'm going to buy ${food} from the grocery shop`;
}
console.log(foodShoppingg()); //I'm going to buy undefined from the grocery shop출력
console.log(foodShoppingg("milk")); //I'm going to buy milk from the grocery shop출력
위의 코드에서 첫번째 콘솔에 인자를 작성하지 않았다. 출력결과는 undefined를 출력하게 된다.
function dinnerMenu(food = "burger") { //인자로 아무것도 받지 않았을 경우, burger를 출력하도록 default값을 설정 해 놓은 것이다.
return `I'm going to eat a ${food} for dinner`;
}
console.log(dinnerMenu("chicken"));//I'm going to eat a chicken for dinner 출력
console.log(dinnerMenu());//I'm going to eat a burger for dinner 출력
이 방법 대신
const dinnerMenu = (food = "burger") => `I'm going to eat a ${food} for dinner`;
console.log(dinnerMenu("chicken")); //I'm going to eat a chicken for dinner 출력
console.log(dinnerMenu()); //I'm going to eat a burger for dinner 출력
이렇게 작성한다.
const
로 바꿔준다.=>
를 쓴다.🧸 index.js 파일
import { Animal, Cat } from "./animal"; // 여기가 import
let cat = new Animal("Cat", 4); //생성자
cat.makeNoise(); //Loud noise
console.log(Animal.return10()); //10
console.log(cat.metaData); //Type Cat, Legs: 4
let cat2 = new Cat("Cat", 4);
cat2.makeNoise(); //meow
console.log(Cat.return10()); //10
console.log(cat2.metaData); //Type Cat, Legs: 4
import
는 export에서 내보내기 된 모듈을 받아올때
사용한다.변수이름
(즉, 보낸 파일에서 사용한 변수)을 import에서 중괄호 안에 작성해준다.🧸 animal.js 파일
export class Animal { // 여기가 export :: Animal class를 모듈로 내보냄
constructor(type, legs) {
this.type = type;
this.legs = legs;
}
makeNoise(sound = "Loud Noise") {
console.log(sound);
}
get metaData() {
return `Type ${this.type}, Legs: ${this.legs}`;
}
static return10() {
return 10;
}
}
export class Cat extends Animal { //여기가 export // extends로 클래스 상속받음
makeNoise(sound = "meow") {
console.log(sound);
}
}
exports는 import로 모듈을 내보낸다.
위의 코드에서 사용한 constructor
은 생성자
이다.
오브젝트
(인스턴스)를 만들고, 생성자에서 할당해준다.위의 코드에서 사용한 get
은 getter메서드
이고, 클래스 속성값을 가져올 때
사용한다.
위의 코드에서 사용한 static
은 정적 메서드이고, 인스턴스를 생성하지 않아도 클래스를 통해 바로 호출할 수 있는 메서드이다.
class 기계{
constructor(){
}
}
클래스를 만드려면 class 클래스이름 { constructor() {} }
의 형태로 쓸 수 있다.
class 기계{
constructor(맛, 개수){
this.맛 = 맛 //this는 기계로부터 생성되는 object라고 이해한다.
this.개수 = 개수
}
}
const 붕어빵 = new 기계('팥', 5)
const 붕어빵2 = new 기계('슈크림', 2)
console.log(붕어빵.맛) //팥 출력
console.log(붕어빵.개수) //5 출력
console.log(붕어빵2.맛) //슈크림 출력
console.log(붕어빵2.개수) //2 출력
new
키워드를 사용해 class메서드에 접근한다.