Chapter 6. Class sugar syntax and Template Strings
기존의 자바스크립트에서는 캡슐화를 하기 위해 constructor function을 사용하였다. 이를 보완하기 위해 class 문법이 등장하였다. class라는 키워드로 말 그대로 클래스를 생성할 수 있게 된 것이다. 이것은 새로운 객체 모델이 아니라 기존에 사용했던 프로토타입 객체 지향의 문법을 class 기반인 것처럼 wrapping 한 문법이다. sugar syntax라고도 한다.
ES5>>
1 2 3 4 5 6 7 8 | function SponsorWidget(name, description, url){ this.name = name; this.description = description; this.url = url; } SponsorWidget.prototype.render = function( ){ //do something } | cs |
ES6>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class SponsorWidget { constructor(name, description, url){ this.name = name; this.description = description; this.url = url; // this = instance } render( ){ // method initializer shorthand를 사용한다! let link = this._buildLink(this.url); // this = instance } _buildLink(url){ // _prefix는 private을 나타낸다.(나타내기만한다.) //do something } } | cs |
Class - inheritance
1 2 3 4 5 6 | class SponsorWidget extends Widget { constructor(name, description, url){ super( ); //... } } | cs |
상위 클래스의 생성자에 접근할 때는 super 를 통해서 접근하는데,
이 문법은 상위 부모 클래스를 확장한 서브클래스의 constructor안에서만 유효하다.
상위 클래스의 메소드에 접근할 때는 this를 통해서 접근할 수 있다
Overriding
JS에서도 마찬가지로 overriding을 지원한다. 상위 부모 클래스에 접근하는 super라는 키워드를 통해 메소드를 재정의하는 방식으로 overriding이 이루어진다.
code>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Class Widget{ constructor(){ this.baseCSS = “site-widget”; } parse(value){ //... } } Class SponsorWidget extends Widget{ constructor(name, description, url){ super(); //... } parse(){ let parsedName = super.parse(this.name); return ${parsedName}; } render(){ //... } } | cs |
Template Strings
이 방법은 interpolation을 가능하게 한다.
ES5>>
1 2 3 | function buildUser(first, last, postCount){ var fullName = first + “ “ + last; } | cs |
ES6>>
1 2 3 | function buildUser(first, last, postCount){ let fullName = `${first} ${last}`; } | cs |
multi-line 문자열을 작성하는데 더 편해졌다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | let longText = `Hi ${userName}, this is a very long text `; console.log(longText); // Hi Sam, // // this is a very // // long text | cs |
Chapter 6. end
'Dev.FrontEnd > JavaScript' 카테고리의 다른 글
[ES6] 부록. ECMAScript 2015 개발환경 Setting with Webpack, ESLint (0) | 2016.09.07 |
---|---|
[ES6] 7. Module system (0) | 2016.09.06 |
[ES6] 5. Collection - Map, Set (0) | 2016.09.06 |
[ES6] 4. Array, Symbol (0) | 2016.09.06 |
[ES6] 3. Object shorthand, destructuring, assign (0) | 2016.09.06 |