SlideShare a Scribd company logo
1 of 20
ES6 STUDY5 T H T I M E
2 0 1 8 . 1 2
장 승 빈
TODAY SUBJECTS
• Class
• async - await
• ES2015+
CLASS
• javascript는 객체 지향 언어가 아니었음
• prototype을 이용해 객체 지향을 지원하도록 함
– 그러나 내부적으로는 여전히 모두 함수
• class 키워드로 선언
– 호이스팅이 되지 않음
기본 사용법
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
getPoint() {
console.log(`x: ${this.x}, y: ${this.y}`);
}
}
let pointInstance = new Point(5, 10);
pointInstance.getPoint();
ES5에서는…
var Point = (function () {
function Point(x, y) {
this._x = x;
this._y = y;
}
Point.prototype.getPoint = function () {
console.log('x: ' + this._x + ', y: ' + this._y);
};
return Point;
}());
var pi = new Point(5,10);
pi.getPoint();
CONSTRUCTOR
• 객체를 초기화하기 위한 특수 메소드
– 인스턴스 생성
• 생성자(Constructor) 메소드는 한번만 사용가능
// new 객체명() 으로 호출되면 수행되는 메소드
PROPERTY
• 클래스의 멤버변수 : 클래스 블록{~}안쪽에 선언 할 수 없음
• 반드시 생성자(Constructor)에서 this.변수명 을 사용해 초기화
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
this.z = 100;
}
}
let pointInstance = new Point(5, 10);
console.log(pointInstance.z);
GETTER AND SETTER
• 프로퍼티의 값을 가져오거나 세팅할 때 사용하는 메소드
• get, set 키워드를 사용하여 함수로 정의함
• 단 인스턴스에서 사용시 property 처럼 사용한다
• getter는 반드시 return 값이 있어야 한다
GETTER AND SETTER
class Point {
constructor() {
this.x = 0;
this.y = 0;
}
get getPointX(){ return this.x; }
set setPointX(pointX){ this.x = pointX; }
get getPointY(){ return this.x; }
set setPointY(pointY){ this.y = pointY; }
}
let pi = new Point();
pi.setPointX = 5;
pi.setPointY = 10;
console.log(`x:${pi.getPointX}, y:${pi.getPointY}`);
STATIC METHOD
• 메소드명 앞에 static을 사용
• 인스턴스를 생성하지 않고도 바로 사용 가능
– ex> Math.random() 같은..
class SuHak {
static pow(x, p){
let result = x;
for(let i=0; i<p-1; i++){
result *= x;
}
return result;
}
}
console.log( SuHak.pow(2,10) );
INHERITANCE
• 부모의 프로퍼티 메소드를 모두 자식이 갖음
• extends 키워드를 사용
• 기본 생성자가 정의된 클래스만 상속이 가능하다.
– 생성자에서 반드시 super를 이용해 부모의 생성자를 호출해줘야 한다.
class ParentObject {
constructor(name) {
this.name = name;
}
parentMethod() {
console.log("parentMethod()", this.name);
}
}
class ChildObject extends ParentObject {
constructor(name, age) {
super(name);
this.age = age;
}
childMethod(){
console.log("childMethod()", this.name, this.age);
}
}
let child = new ChildObject("JANG", 34);
child.childMethod();
child.parentMethod();
console.log( child instanceof ChildObject );
console.log( child instanceof ParentObject );
ASYNC/AWAIT
• 비동기 함수(내부적으로 promise 구현된)를 동기적 실행
• promise보다 깔끔하게 보이는 문법
• 프론트에서 쓰실분은..
let f1 = new Promise((resolve, reject) => {
try {
setTimeout( () => {
console.log("f1");
resolve("f1");
}, 2000);
} catch (error) { reject("Error"); }
});
let f2 = new Promise((resolve, reject) => {
try {
setTimeout( () => {
console.log("f2");
resolve("f2");
}, 1000);
} catch (error) { reject("Error"); }
});
f1.then( msg => {
console.log("msg: ", msg);
});
f2.then( msg => {
console.log("msg: ", msg);
});
f1.then( msg => {
console.log("msg: ", msg);
f2.then( msg => {
console.log("msg: ", msg);
});
});
async function syncFunc(){
let msg = await f1;
console.log( "msg: ", msg );
msg = await f2;
console.log( "msg: ", msg );
}
syncFunc();
f1.then( msg => {
console.log("msg: ", msg);
return f2;
}).then( msg => {
console.log("msg: ", msg);
});
어디까지 왔는가?
• let, const
• template literal
• arrow function
• function params (rest, default)
• spread operator
• destructuring
• module system
• for .. of
• new Collection (map/set + weak)
• object literal
• symbol type
• promise
• class
• async/await
• …
• es6-features
• mdn es6
• babel es6
• PoiemaWeb
아직 갈길은 멀지만…
TODO WEB APP PROJECT
http://es6.devs.co.kr
수고하셨습니다.

More Related Content

What's hot

하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2민석 이
 
하스켈로 알고리즘 문제 풀기
하스켈로 알고리즘 문제 풀기하스켈로 알고리즘 문제 풀기
하스켈로 알고리즘 문제 풀기민석 이
 
하스켈 성능 튜닝 2
하스켈 성능 튜닝 2하스켈 성능 튜닝 2
하스켈 성능 튜닝 2민석 이
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법Terry Cho
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for testKyunghoon Kim
 
[Swift] Data Structure - Dequeue
[Swift] Data Structure - Dequeue[Swift] Data Structure - Dequeue
[Swift] Data Structure - DequeueBill Kim
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작Terry Cho
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석용 최
 
ECMA Script 5 & 6
ECMA Script 5 & 6ECMA Script 5 & 6
ECMA Script 5 & 6sewoo lee
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 

What's hot (13)

하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2
 
하스켈로 알고리즘 문제 풀기
하스켈로 알고리즘 문제 풀기하스켈로 알고리즘 문제 풀기
하스켈로 알고리즘 문제 풀기
 
하스켈 성능 튜닝 2
하스켈 성능 튜닝 2하스켈 성능 튜닝 2
하스켈 성능 튜닝 2
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for test
 
[Swift] Data Structure - Dequeue
[Swift] Data Structure - Dequeue[Swift] Data Structure - Dequeue
[Swift] Data Structure - Dequeue
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석
 
ECMA Script 5 & 6
ECMA Script 5 & 6ECMA Script 5 & 6
ECMA Script 5 & 6
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 

Similar to ES6 for Node.js Study 5주차

스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍Young-Beom Rhee
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장tedypicker
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumerChang Yoon Oh
 
Python 테스트 시작하기
Python 테스트 시작하기Python 테스트 시작하기
Python 테스트 시작하기Hosung Lee
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)Suwon Chae
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development지수 윤
 
Undefined 2월발표 backbonejs
Undefined 2월발표 backbonejsUndefined 2월발표 backbonejs
Undefined 2월발표 backbonejsKyungree Bae
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With GroovyTommy C. Kang
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storageJinKyoungHeo
 

Similar to ES6 for Node.js Study 5주차 (20)

스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumer
 
Python 테스트 시작하기
Python 테스트 시작하기Python 테스트 시작하기
Python 테스트 시작하기
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 
Undefined 2월발표 backbonejs
Undefined 2월발표 backbonejsUndefined 2월발표 backbonejs
Undefined 2월발표 backbonejs
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
Java start01 in 2hours
Java start01 in 2hoursJava start01 in 2hours
Java start01 in 2hours
 
Tdd 4장
Tdd 4장Tdd 4장
Tdd 4장
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Scalability
ScalabilityScalability
Scalability
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, Scalability
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storage
 
Swt J Face 2/3
Swt J Face 2/3Swt J Face 2/3
Swt J Face 2/3
 

More from 승빈이네 공작소

토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3승빈이네 공작소
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2승빈이네 공작소
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1승빈이네 공작소
 
Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드승빈이네 공작소
 
Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기승빈이네 공작소
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage승빈이네 공작소
 
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time DatabaseFirebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database승빈이네 공작소
 
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 AuthenticationFirebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication승빈이네 공작소
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting승빈이네 공작소
 

More from 승빈이네 공작소 (19)

토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
 
Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링
 
Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드
 
Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법
 
Git 코드랩 스터디 4
Git 코드랩 스터디 4Git 코드랩 스터디 4
Git 코드랩 스터디 4
 
Git 코드랩 스터디 3
Git 코드랩 스터디 3Git 코드랩 스터디 3
Git 코드랩 스터디 3
 
Git 코드랩 스터디 2
Git 코드랩 스터디 2Git 코드랩 스터디 2
Git 코드랩 스터디 2
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
 
ES6 for Node.js Study 4주차
ES6 for Node.js Study 4주차ES6 for Node.js Study 4주차
ES6 for Node.js Study 4주차
 
ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차
 
ES6 for Node.js Study
ES6 for Node.js StudyES6 for Node.js Study
ES6 for Node.js Study
 
겜냥이 어플 활용 가이드
겜냥이 어플 활용 가이드겜냥이 어플 활용 가이드
겜냥이 어플 활용 가이드
 
Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
 
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time DatabaseFirebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
 
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 AuthenticationFirebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 

Recently uploaded

[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdfssuserf8b8bd1
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료Softwide Security
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료Softwide Security
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)Wonjun Hwang
 

Recently uploaded (6)

[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 

ES6 for Node.js Study 5주차

  • 1. ES6 STUDY5 T H T I M E 2 0 1 8 . 1 2 장 승 빈
  • 2. TODAY SUBJECTS • Class • async - await • ES2015+
  • 3. CLASS • javascript는 객체 지향 언어가 아니었음 • prototype을 이용해 객체 지향을 지원하도록 함 – 그러나 내부적으로는 여전히 모두 함수 • class 키워드로 선언 – 호이스팅이 되지 않음
  • 4. 기본 사용법 class Point { constructor(x, y) { this.x = x; this.y = y; } getPoint() { console.log(`x: ${this.x}, y: ${this.y}`); } } let pointInstance = new Point(5, 10); pointInstance.getPoint();
  • 5. ES5에서는… var Point = (function () { function Point(x, y) { this._x = x; this._y = y; } Point.prototype.getPoint = function () { console.log('x: ' + this._x + ', y: ' + this._y); }; return Point; }()); var pi = new Point(5,10); pi.getPoint();
  • 6. CONSTRUCTOR • 객체를 초기화하기 위한 특수 메소드 – 인스턴스 생성 • 생성자(Constructor) 메소드는 한번만 사용가능 // new 객체명() 으로 호출되면 수행되는 메소드
  • 7. PROPERTY • 클래스의 멤버변수 : 클래스 블록{~}안쪽에 선언 할 수 없음 • 반드시 생성자(Constructor)에서 this.변수명 을 사용해 초기화 class Point { constructor(x, y) { this.x = x; this.y = y; this.z = 100; } } let pointInstance = new Point(5, 10); console.log(pointInstance.z);
  • 8. GETTER AND SETTER • 프로퍼티의 값을 가져오거나 세팅할 때 사용하는 메소드 • get, set 키워드를 사용하여 함수로 정의함 • 단 인스턴스에서 사용시 property 처럼 사용한다 • getter는 반드시 return 값이 있어야 한다
  • 9. GETTER AND SETTER class Point { constructor() { this.x = 0; this.y = 0; } get getPointX(){ return this.x; } set setPointX(pointX){ this.x = pointX; } get getPointY(){ return this.x; } set setPointY(pointY){ this.y = pointY; } } let pi = new Point(); pi.setPointX = 5; pi.setPointY = 10; console.log(`x:${pi.getPointX}, y:${pi.getPointY}`);
  • 10. STATIC METHOD • 메소드명 앞에 static을 사용 • 인스턴스를 생성하지 않고도 바로 사용 가능 – ex> Math.random() 같은..
  • 11. class SuHak { static pow(x, p){ let result = x; for(let i=0; i<p-1; i++){ result *= x; } return result; } } console.log( SuHak.pow(2,10) );
  • 12. INHERITANCE • 부모의 프로퍼티 메소드를 모두 자식이 갖음 • extends 키워드를 사용 • 기본 생성자가 정의된 클래스만 상속이 가능하다. – 생성자에서 반드시 super를 이용해 부모의 생성자를 호출해줘야 한다.
  • 13. class ParentObject { constructor(name) { this.name = name; } parentMethod() { console.log("parentMethod()", this.name); } } class ChildObject extends ParentObject { constructor(name, age) { super(name); this.age = age; } childMethod(){ console.log("childMethod()", this.name, this.age); } } let child = new ChildObject("JANG", 34); child.childMethod(); child.parentMethod(); console.log( child instanceof ChildObject ); console.log( child instanceof ParentObject );
  • 14. ASYNC/AWAIT • 비동기 함수(내부적으로 promise 구현된)를 동기적 실행 • promise보다 깔끔하게 보이는 문법 • 프론트에서 쓰실분은..
  • 15. let f1 = new Promise((resolve, reject) => { try { setTimeout( () => { console.log("f1"); resolve("f1"); }, 2000); } catch (error) { reject("Error"); } }); let f2 = new Promise((resolve, reject) => { try { setTimeout( () => { console.log("f2"); resolve("f2"); }, 1000); } catch (error) { reject("Error"); } });
  • 16. f1.then( msg => { console.log("msg: ", msg); }); f2.then( msg => { console.log("msg: ", msg); }); f1.then( msg => { console.log("msg: ", msg); f2.then( msg => { console.log("msg: ", msg); }); });
  • 17. async function syncFunc(){ let msg = await f1; console.log( "msg: ", msg ); msg = await f2; console.log( "msg: ", msg ); } syncFunc(); f1.then( msg => { console.log("msg: ", msg); return f2; }).then( msg => { console.log("msg: ", msg); });
  • 18. 어디까지 왔는가? • let, const • template literal • arrow function • function params (rest, default) • spread operator • destructuring • module system • for .. of • new Collection (map/set + weak) • object literal • symbol type • promise • class • async/await • … • es6-features • mdn es6 • babel es6 • PoiemaWeb 아직 갈길은 멀지만…
  • 19. TODO WEB APP PROJECT http://es6.devs.co.kr