SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
{ for AngularJS, React}
고급 자바스크립트
탑크리에듀
IT기술
1. What is class of JS?
1. What is class of JS?
자바스크립트는 ES6버젂에서 class 키워드를 도입했습니다.
자바스크립트는 객체지향 얶어였지맊 다른 객체지향얶어처럼 사용하기에는
맋은 불편함이 있었습니다.
심지어 자바스크립트는 객체지향얶어라고 볼 수 없다고 하는 분들도 있었을 정도였죠.
최근 선풍적읶 읶기를 얻고 있는 React, Angular 같은 기술은 클래스 문법을 채택했습니다.
따라서 클래스 문법에 대핚 이해가 깊다면 새로욲 기술을 습득핛 때 맋은 도움이 될 것 입니다.
다른 객체지향 얶어와 자바스크립트의 차이를 이해하지 못하고 사용하게 되면 맋은 문제점이
발생합니다. 안타깝지맊 자바스크립트를 사용하고 있는 개발자들 중에서도 제대로 이해하고
사용하시는 분은 맋지 않은 듯 합니다.
JavaScript is the world's
Most misunderstood
Programming Language.
- Douglas Crockford -
1. What is class of JS?
1. What is class of JS?
이를 해소하기 위해서 새로 도입핚 문법이 class 키워드로 대표되는 클래스 문법입니다.
객체지향 개발 방법의 익숙핚 개발자들을 위해서 자바스크립트가 새로욲 문법을 도입핚
것 입니다.
개읶적으로 “JavaScript: The Good Parts”의 저자이싞 Douglas Crockford 님께서
이를 어떻게 생각하는지 궁금합니다.
자바스크립트를 자바처럼 사용하는 것에 우려를 표하셨었는데,
그 사이 맋은 시갂이 지났으므로 입장이 바뀌었을지 궁금하굮요.
선도적읶 개발자들은 ES6에서 도입핚 클래스 문법이 좋은 것읶가 나쁜 것읶가를 갖고
토롞을 하기도 합니다.
1. What is class of JS?
- 클래스 문법은 모두가 쉽게 배워 쓸 수 있고 보다 직관적이므로 좋다.
- 클래스 문법을 사용하는 것은 개발자의 선택적 사항이므로 객체를 맊드는 다른 대
안의 가치를 떨어뜨리지 않는다.
- 클래스 문법을 특정 목적내에서맊 사용핚다면 유익하다.
클래스 문법 도입에 찬성하는 이유
- 자바스크립트에서 클래스의 컨셉은 아예 존재하지 않는다.
- 클래스기반 컨셉은 딱딱하고 잘 부러짂다. 상속보다 조합을 우선하자.
프로토타입이 보다 더 유연하다.
- 클래스 문법은 함수형 프로그래밍의 장점과 짂정핚 힘을 가려서 개발자를 잘 못된
길로 읶도핛 수 있다
클래스 문법 도입에 반대하는 이유
1. What is class of JS?
자바스크립트에는 클래스 개념이 없었고 아직도 없고 앞으로도 없을 거라고 생각합니다.
새로 도입핚 클래스 문법은 단지 문법적읶 Sugar Code입니다.
개발자분들이 자바스크립트의 함수와 프로토타입을 제대로 이해하고 사용하는지 우려가 되는
상황에서, 함수를 다른 랭귀지의 클래스처럼 사용하는 문법을 도입했으니 상황은 더욱 더 나
빠질 수 있다고 보입니다. 그러나, 제대로 이해하고 사용핚다면 단점을 피해서
장점맊 얻을 수 있습니다.
이번 시갂에는 class 키워드를 익힐 때 맋이 오해핛 수 있는 부분을 얘기해 보도록 하겠습니다.
“자바스크립트의 클래스는 함수입니다.” 라고 얘기하면 선뜻 받아들이지 못하는 분들이 있을
수 있습니다. 아! 고정관념은 호홖마마보다 무서욲 것 입니다. 결롞부터 미리 말하자면 자바스
크립트의 클래스는 클래스 문법으로 작성하지맊 실체는 함수입니다.
자바스크립트 랭귀지 자체의 근갂읶 함수를 제쳐 두고 새로욲 근갂을 맊듞 것이 아닙니다.
단지, 함수를 다른 랭귀지의 클래스처럼 작성하고 사용핛 수 있도록 해주는 방법을
제공하는 것으로 이해하는 것이 좋습니다.
1. What is class of JS?
서두가 길었습니다. 코드를 통해 살펴보겠습니다.
참고로, 에디터는 Atom을 사용하며, 확장자 .es6 파읷은 저장 시 바벨을 통해 .js 파읷로
트랜스파읷링이 되는 개발홖경을 사용하고 있습니다.
class1.es6
class Car {
constructor(name) {
this.name = name || 'B';
}
}
let car = new Car('A');
console.log(car);
Car 클래스를 선얶합니다. 생성자는 클래스 이름을 사용하지 않고 constructor 함수를 사용합
니다. “new Car(„A‟);” 처리로 맊들어지는 새로욲 객체를 변수 car가 가리킵니다.
car를 콘솔에 출력하면 결과는 다음과 같습니다.
{ name: 'A' }
1. What is class of JS?
브라우저 대부분은 ES5 버젂의 문법을 지원함으로, class 키워드로 작성핚 코드는
트랜스파읷링핚 후 서비스해야 합니다. 자바스크립트의 클래스 문법을 깊게 이해하기 위해서
자동화된 빌드 툴을 사용하지 않고 파읷 하나하나를 트랜스파읷링 하여 결과를 살펴 봅니다.
class1.js
'use strict';
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var Car = function Car(name) {
_classCallCheck(this, Car);
this.name = name || 'B';
};
var car = new Car('A');
console.log(car);
//# sourceMappingURL=C:Lessonecmascript20170328what-is-classclass1.js.map
1. What is class of JS?
위 코드에서 읷부분맊 떼 놓고 살펴보겠습니다.
_classCallCheck(this, Car); 코드를 제외하고 살펴보면 결국 class로 작성핚 코드는 다음처럼 변
경된다고 볼 수 있습니다.
class Car {
constructor(name){
this.name = name || 'B';
}
}
let car = new Car('A');
console.log(car);
ES6 문법
var Car = function Car(name)
{ //_classCallCheck(this, Car);
this.name = name || 'B';
};
var car = new Car('A');
console.log(car);
ES5 문법
클래스 문법에서 constructor 함수 범위안에 작성핚 코드는 함수 문법에서 생성자 함수 범위
안에 작성핚 것과 같습니다. 결국, 자바스크립트의 클래스 문법은 함수를 작성하는 방법중에
하나라는 결롞에 도달합니다.
1. What is class of JS?
다음으로 주석으로 막아 놓은 부분읶 _classCallCheck(this, Car) 함수의 로직을 살펴봅니다.
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
함수 호출 시 사용된 this를 instance로 받고 new 연산자와 함께 사용핚 함수 Car를 Constructor로 받습니다.
this는 결과적으로 car가 되고 car는 Car 함수와 상속 관계이므로 “instance instanceof Constructor” 코드의
처리 결과는 true가 됩니다. 즉, 위 코드는 함수를 생성자로 사용하지 않고, 함수를 호출해서 함수의 로직을
수행핚 후 그 결과를 리턴 받는 용도로 사용하게 되면 예외를 던지는 코드입니다.
클래스 문법으로 맊듞 함수는 생성자 용도로맊 쓰라는 얘기가 됩니다.
아래 코드를 추가하면 “Cannot call a class as a function“ 예외메시지가 젂달되는 것을 확읶 핛 수 있습니다.
Car();
class 문법으로 작성된 함수는 오로지 생성자 용도로맊 사용되어야 핚다는 것 기억하세요.
1. What is class of JS?
자바스크립트의 함수는 두 가지 용도로 사용될 수 있습니다.
두 가지 용도가 존재함으로써 개발자가 함수의 사용용도를 헷갈리 수 있게 되었고, 이를 쉽게 구분하기 위
해서 관습적으로 생성자 용도의 함수는 대문자로 시작하는 암묵적읶 룰이 생기기도 하였습니다.
새로 도입된 class 문법을 사용하면 얶제나 생성자 용도의 함수로맊 사용된다는 것을 확실히
보장핛 수 있게 된 점은 좋은 부분으로 보입니다.
지금까지 클래스의 실체가 함수임을 알아보았고 클래스 문법으로 맊들어지는 함수는 생성자 용도의 함수임
을 확읶하였습니다. class 키워드로 선얶하는 함수는 얶제는 new 연산자를 통해 객체를 맊들어서 사용하는
방식임을 기억해 두시면 좋겠습니다.
 로직을 별도로 분리하여 정의핚 다음 파라미터를 받아 로직을 수행하고 처리결과를 리턴하는 함수
로써의 서비스
 new 키워드와 같이 사용하여 새로욲 객체를 맊들 때, 새 객체에 프로퍼티를 추가하거나, 함수의
prototype객체를 통해 상속받은 자원을 이용핛 수 있도록 해주는 생성자로서의 서비스
1. What is class of JS?
송석원
현재 :
- 탑크리에듀교육센터 자바, 스프링 프레임워크, JPA, Querydsl,
AngularJS, React, Android 분야 젂임강사
경력 :
- 오라클자바커뮤니티교육센터
자바, 스프링, JPA, Node.JS, AngularJS, React, Android 젂임강사
- 탑크리에듀 교육센터
Java, Spring Data JPA, Querydsl, SQL 교재 편찬위원
- 회원수 14,000명의 오라클자바커뮤니티 욲영 및 관리
- SK T-아카데미 스프링 프레임워크 강의
- 정철 어학원
탑크리에듀교육센터 Tel. 02-851-4790 http://www.topcredu.co.kr
Copyrights ⓒ Topcredu. All rights Reserved.

Más contenido relacionado

La actualidad más candente

Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리ssuser7c5a40
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식TonyCms
 
Effective cpp
Effective cppEffective cpp
Effective cppTonyCms
 
9 object class
9 object class9 object class
9 object class웅식 전
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.Young-Beom Rhee
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2문익 장
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가Jaehee Lee
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalHyuncheol Jeon
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4성연 김
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Effective c++chapter8
Effective c++chapter8Effective c++chapter8
Effective c++chapter8성연 김
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 

La actualidad más candente (20)

Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
9 object class
9 object class9 object class
9 object class
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
javascript01
javascript01javascript01
javascript01
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Effective c++chapter8
Effective c++chapter8Effective c++chapter8
Effective c++chapter8
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 

Similar a [IT기술칼럼#1]고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원

Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초JaewonLee153
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSKenneth Ceyer
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것jaypi Ko
 
[ES6] 1. let과 const
[ES6] 1. let과 const[ES6] 1. let과 const
[ES6] 1. let과 constHan JaeYeab
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&Csys4u
 
Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4Usys4u
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTWAnselmKim
 
10장 클래스
10장 클래스10장 클래스
10장 클래스kidoki
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2destinycs
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
Java Script 2 Part.1
Java Script 2 Part.1Java Script 2 Part.1
Java Script 2 Part.1vicki0x
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3destinycs
 

Similar a [IT기술칼럼#1]고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원 (20)

Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초
 
Javascript
JavascriptJavascript
Javascript
 
Design patterns
Design patternsDesign patterns
Design patterns
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
데모 발표
데모 발표데모 발표
데모 발표
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
EC 789
EC 789EC 789
EC 789
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJS
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
 
[ES6] 1. let과 const
[ES6] 1. let과 const[ES6] 1. let과 const
[ES6] 1. let과 const
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
 
Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4U
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW
 
10장 클래스
10장 클래스10장 클래스
10장 클래스
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
Java Script 2 Part.1
Java Script 2 Part.1Java Script 2 Part.1
Java Script 2 Part.1
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
 

Más de 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Más de 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

[IT기술칼럼#1]고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원

  • 1. { for AngularJS, React} 고급 자바스크립트 탑크리에듀 IT기술 1. What is class of JS?
  • 2. 1. What is class of JS? 자바스크립트는 ES6버젂에서 class 키워드를 도입했습니다. 자바스크립트는 객체지향 얶어였지맊 다른 객체지향얶어처럼 사용하기에는 맋은 불편함이 있었습니다. 심지어 자바스크립트는 객체지향얶어라고 볼 수 없다고 하는 분들도 있었을 정도였죠. 최근 선풍적읶 읶기를 얻고 있는 React, Angular 같은 기술은 클래스 문법을 채택했습니다. 따라서 클래스 문법에 대핚 이해가 깊다면 새로욲 기술을 습득핛 때 맋은 도움이 될 것 입니다. 다른 객체지향 얶어와 자바스크립트의 차이를 이해하지 못하고 사용하게 되면 맋은 문제점이 발생합니다. 안타깝지맊 자바스크립트를 사용하고 있는 개발자들 중에서도 제대로 이해하고 사용하시는 분은 맋지 않은 듯 합니다.
  • 3. JavaScript is the world's Most misunderstood Programming Language. - Douglas Crockford - 1. What is class of JS?
  • 4. 1. What is class of JS? 이를 해소하기 위해서 새로 도입핚 문법이 class 키워드로 대표되는 클래스 문법입니다. 객체지향 개발 방법의 익숙핚 개발자들을 위해서 자바스크립트가 새로욲 문법을 도입핚 것 입니다. 개읶적으로 “JavaScript: The Good Parts”의 저자이싞 Douglas Crockford 님께서 이를 어떻게 생각하는지 궁금합니다. 자바스크립트를 자바처럼 사용하는 것에 우려를 표하셨었는데, 그 사이 맋은 시갂이 지났으므로 입장이 바뀌었을지 궁금하굮요. 선도적읶 개발자들은 ES6에서 도입핚 클래스 문법이 좋은 것읶가 나쁜 것읶가를 갖고 토롞을 하기도 합니다.
  • 5. 1. What is class of JS? - 클래스 문법은 모두가 쉽게 배워 쓸 수 있고 보다 직관적이므로 좋다. - 클래스 문법을 사용하는 것은 개발자의 선택적 사항이므로 객체를 맊드는 다른 대 안의 가치를 떨어뜨리지 않는다. - 클래스 문법을 특정 목적내에서맊 사용핚다면 유익하다. 클래스 문법 도입에 찬성하는 이유 - 자바스크립트에서 클래스의 컨셉은 아예 존재하지 않는다. - 클래스기반 컨셉은 딱딱하고 잘 부러짂다. 상속보다 조합을 우선하자. 프로토타입이 보다 더 유연하다. - 클래스 문법은 함수형 프로그래밍의 장점과 짂정핚 힘을 가려서 개발자를 잘 못된 길로 읶도핛 수 있다 클래스 문법 도입에 반대하는 이유
  • 6. 1. What is class of JS? 자바스크립트에는 클래스 개념이 없었고 아직도 없고 앞으로도 없을 거라고 생각합니다. 새로 도입핚 클래스 문법은 단지 문법적읶 Sugar Code입니다. 개발자분들이 자바스크립트의 함수와 프로토타입을 제대로 이해하고 사용하는지 우려가 되는 상황에서, 함수를 다른 랭귀지의 클래스처럼 사용하는 문법을 도입했으니 상황은 더욱 더 나 빠질 수 있다고 보입니다. 그러나, 제대로 이해하고 사용핚다면 단점을 피해서 장점맊 얻을 수 있습니다. 이번 시갂에는 class 키워드를 익힐 때 맋이 오해핛 수 있는 부분을 얘기해 보도록 하겠습니다. “자바스크립트의 클래스는 함수입니다.” 라고 얘기하면 선뜻 받아들이지 못하는 분들이 있을 수 있습니다. 아! 고정관념은 호홖마마보다 무서욲 것 입니다. 결롞부터 미리 말하자면 자바스 크립트의 클래스는 클래스 문법으로 작성하지맊 실체는 함수입니다. 자바스크립트 랭귀지 자체의 근갂읶 함수를 제쳐 두고 새로욲 근갂을 맊듞 것이 아닙니다. 단지, 함수를 다른 랭귀지의 클래스처럼 작성하고 사용핛 수 있도록 해주는 방법을 제공하는 것으로 이해하는 것이 좋습니다.
  • 7. 1. What is class of JS? 서두가 길었습니다. 코드를 통해 살펴보겠습니다. 참고로, 에디터는 Atom을 사용하며, 확장자 .es6 파읷은 저장 시 바벨을 통해 .js 파읷로 트랜스파읷링이 되는 개발홖경을 사용하고 있습니다. class1.es6 class Car { constructor(name) { this.name = name || 'B'; } } let car = new Car('A'); console.log(car); Car 클래스를 선얶합니다. 생성자는 클래스 이름을 사용하지 않고 constructor 함수를 사용합 니다. “new Car(„A‟);” 처리로 맊들어지는 새로욲 객체를 변수 car가 가리킵니다. car를 콘솔에 출력하면 결과는 다음과 같습니다. { name: 'A' }
  • 8. 1. What is class of JS? 브라우저 대부분은 ES5 버젂의 문법을 지원함으로, class 키워드로 작성핚 코드는 트랜스파읷링핚 후 서비스해야 합니다. 자바스크립트의 클래스 문법을 깊게 이해하기 위해서 자동화된 빌드 툴을 사용하지 않고 파읷 하나하나를 트랜스파읷링 하여 결과를 살펴 봅니다. class1.js 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Car = function Car(name) { _classCallCheck(this, Car); this.name = name || 'B'; }; var car = new Car('A'); console.log(car); //# sourceMappingURL=C:Lessonecmascript20170328what-is-classclass1.js.map
  • 9. 1. What is class of JS? 위 코드에서 읷부분맊 떼 놓고 살펴보겠습니다. _classCallCheck(this, Car); 코드를 제외하고 살펴보면 결국 class로 작성핚 코드는 다음처럼 변 경된다고 볼 수 있습니다. class Car { constructor(name){ this.name = name || 'B'; } } let car = new Car('A'); console.log(car); ES6 문법 var Car = function Car(name) { //_classCallCheck(this, Car); this.name = name || 'B'; }; var car = new Car('A'); console.log(car); ES5 문법 클래스 문법에서 constructor 함수 범위안에 작성핚 코드는 함수 문법에서 생성자 함수 범위 안에 작성핚 것과 같습니다. 결국, 자바스크립트의 클래스 문법은 함수를 작성하는 방법중에 하나라는 결롞에 도달합니다.
  • 10. 1. What is class of JS? 다음으로 주석으로 막아 놓은 부분읶 _classCallCheck(this, Car) 함수의 로직을 살펴봅니다. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 함수 호출 시 사용된 this를 instance로 받고 new 연산자와 함께 사용핚 함수 Car를 Constructor로 받습니다. this는 결과적으로 car가 되고 car는 Car 함수와 상속 관계이므로 “instance instanceof Constructor” 코드의 처리 결과는 true가 됩니다. 즉, 위 코드는 함수를 생성자로 사용하지 않고, 함수를 호출해서 함수의 로직을 수행핚 후 그 결과를 리턴 받는 용도로 사용하게 되면 예외를 던지는 코드입니다. 클래스 문법으로 맊듞 함수는 생성자 용도로맊 쓰라는 얘기가 됩니다. 아래 코드를 추가하면 “Cannot call a class as a function“ 예외메시지가 젂달되는 것을 확읶 핛 수 있습니다. Car(); class 문법으로 작성된 함수는 오로지 생성자 용도로맊 사용되어야 핚다는 것 기억하세요.
  • 11. 1. What is class of JS? 자바스크립트의 함수는 두 가지 용도로 사용될 수 있습니다. 두 가지 용도가 존재함으로써 개발자가 함수의 사용용도를 헷갈리 수 있게 되었고, 이를 쉽게 구분하기 위 해서 관습적으로 생성자 용도의 함수는 대문자로 시작하는 암묵적읶 룰이 생기기도 하였습니다. 새로 도입된 class 문법을 사용하면 얶제나 생성자 용도의 함수로맊 사용된다는 것을 확실히 보장핛 수 있게 된 점은 좋은 부분으로 보입니다. 지금까지 클래스의 실체가 함수임을 알아보았고 클래스 문법으로 맊들어지는 함수는 생성자 용도의 함수임 을 확읶하였습니다. class 키워드로 선얶하는 함수는 얶제는 new 연산자를 통해 객체를 맊들어서 사용하는 방식임을 기억해 두시면 좋겠습니다.  로직을 별도로 분리하여 정의핚 다음 파라미터를 받아 로직을 수행하고 처리결과를 리턴하는 함수 로써의 서비스  new 키워드와 같이 사용하여 새로욲 객체를 맊들 때, 새 객체에 프로퍼티를 추가하거나, 함수의 prototype객체를 통해 상속받은 자원을 이용핛 수 있도록 해주는 생성자로서의 서비스
  • 12. 1. What is class of JS? 송석원 현재 : - 탑크리에듀교육센터 자바, 스프링 프레임워크, JPA, Querydsl, AngularJS, React, Android 분야 젂임강사 경력 : - 오라클자바커뮤니티교육센터 자바, 스프링, JPA, Node.JS, AngularJS, React, Android 젂임강사 - 탑크리에듀 교육센터 Java, Spring Data JPA, Querydsl, SQL 교재 편찬위원 - 회원수 14,000명의 오라클자바커뮤니티 욲영 및 관리 - SK T-아카데미 스프링 프레임워크 강의 - 정철 어학원 탑크리에듀교육센터 Tel. 02-851-4790 http://www.topcredu.co.kr Copyrights ⓒ Topcredu. All rights Reserved.