Top Banner
JavaScript.next New features: classes, generators, iterators, etc. Telerik Academy Plus http://academy.telerik.com JavaScript.Next
41

New features: classes, generators, iterators, etc. Telerik Academy Plus JavaScript.Next.

Dec 25, 2015

Download

Documents

Dominic Hampton
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

JavaScript.nextNew features: classes, generators, iterators, etc.

Telerik Academy Plushttp://academy.telerik.com

JavaScript.Next

Page 2: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Table of Contents JavaScript History

The ECMAScript standard Using JavaScript.Next

Running JavaScript.Next in the browsers Chrome Harmony, Firefox Nightly

Compiling to JS5 – Traceur, Babel

ECMAScript 6 features Variables: var, let, const

OOP: classes, inheritance, super, get/set

Functions: generators, iterators, arrow functions, comprehensions, for-of

Page 3: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Table of Contents (2) ECMAScript 6 features:

Data Structures: set/weakset, map/weakmap

Async operations: built-in promises

Modules: imports, exports, compitability

Objects: computed properties, shorthand properties, Object.is(), Object.assign(), proxies

Others: templates, Math and Number extensions

Page 4: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

JavaScript History

Page 5: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

JavaScript History JavaScript is a front-end scripting language developed by Netscape for dynamic content Lightweight, but with limited

capabilities Can be used as object-oriented

language Embedded in your HTML page Interpreted by the Web browser

Client-side, mobile and desktop technology

Simple and flexible Powerful to manipulate the DOM

5

Page 6: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Using JavaScript.nextRunning JS next today

Page 7: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Using JavaScript.next

There are a few ways to use JavaScript.next today Enable tags in Chrome and Firefox

Compile to JavaScript 5 using Traceur or Babel

A compatibility table for ES6 support can be found at https://kangax.github.io/compat-table/es6/

Page 8: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 Variables

Page 9: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 Variables ES6 introduces new ways to declare

variables: let – creates a scope variable

Accessible only in its scopefor(let number of [1, 2, 3, 4]){ console.log(number);}//accessing number here throws exception

const – creates a constant variable Its value is read-only and cannot be

changedconst MAX_VALUE = 16;MAX_VALUE = 15; // throws exception

Page 10: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 VariablesLive Demo

Page 11: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

for-of loop

Page 12: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

For-of loop The for-of loop iterates over the

values Of an array

function* generator(maxValue){ for(let i = 0; i < maxValue; i+=1){ yield i; }}let iter = generator(10);for(let val of iter()){ console.log(val);}

let sum = 0;for(let number of [1, 2, 3]) sum+= number;

Of An iteratable object

Page 13: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

For-of loopLive Demo

Page 14: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Templated String

Page 15: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Templated Strings in ES6

ES6 supports templated strings i.e. strings with placeholders:

let people = [new Person('Doncho', 'Minkov'), … ];for(let person of people){ log(`Fullname: ${person.fname} ${person.lname}`);}

Templates escape the strings

They do not call eval

Page 16: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Classes and Inheritance

The way of OOP in ES6

Page 17: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Classes and Inheritance in ES6

ES6 introduces classes and a way to create classical OOP

class Person extends Mammal{ constructor(fname, lname, age){ super(age); this._fname = fname; this._lname = lname; } get fullname() { //getter property of fullname } set fullname(newfullname) { //setter property of fullname } // more class members…}

Page 18: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Classes and Inheritance in ES6

ES6 introduces classes and a way to create classical OOP

class Person extends Mammal{ constructor(fname, lname, age){ super(age); this._fname = fname; this._lname = lname; } get fullname() { //getter property of fullname } set fullname(newfullname) { //setter property of fullname } // more class members…}

Constructor of the class

Page 19: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Classes and Inheritance in ES6

ES6 introduces classes and a way to create classical OOP

class Person extends Mammal{ constructor(fname, lname, age){ super(age); this._fname = fname; this._lname = lname; } get fullname() { //getter property of fullname } set fullname(newfullname) { //setter property of fullname } // more class members…}

Getters and setters

Constructor of the class

Page 20: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Classes and Inheritance in ES6

Live Demo

Page 21: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow FunctionsAlso called LAMBDA expressions

Page 22: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow Functions

Arrow functions easify the creation of functions:

Page 23: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow Functions

Arrow functions easify the creation of functions:

numbers.sort(function(a, b){ return b – a;});

Page 24: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow Functions

Arrow functions easify the creation of functions:

numbers.sort(function(a, b){ return b – a;});

numbers.sort((a, b) => b – a);

Becomes

Page 25: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow Functions

Arrow functions easify the creation of functions:

numbers.sort(function(a, b){ return b – a;});

numbers.sort((a, b) => b – a);

var fullnames = people.filter(function (person) { return person.age >= 18; }).map(function (person) { return person.fullname; });

Becomes

Page 26: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow Functions

Arrow functions easify the creation of functions:

numbers.sort(function(a, b){ return b – a;});

numbers.sort((a, b) => b – a);

var fullnames = people.filter(function (person) { return person.age >= 18; }).map(function (person) { return person.fullname; });

var fullnames2 = people.filter(p => p.age >= 18) .map(p => p.fullname);

Becomes

Becomes

Page 27: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Arrow FunctionsLive Demo

Page 28: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Object Literals

Page 29: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Object Literals ES6 adds a new feature (rule) to the way of defining properties: Instead of let name = 'Doncho

Minkov', age = 25;let person = { name: name, age: age};

We can do just:let name = 'Doncho Minkov';let person = { name, age};

Page 30: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Object LiteralsLive Demo

Page 31: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Destructuring Assignments

Page 32: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Destructuring Assignments

Destructuring assignments allow to set values to objects in an easier way: Destructuring assignments with

arrays:var [a,b] = [1,2]; //a = 1, b = 2var [x, , y] = [1, 2, 3] // x = 1, y = 3var [first, second, ...rest] = people;

Swap values:[x, y] = [y, x]

Result of method:

function get(){ return [1, 2, 3]; }var [x, y] = get();

Page 33: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Destructuring Assignments

Destructuring assignments allow to set values to objects in an easier way: Destructuring assignments with

objects:var person = { name: 'Doncho Minkov', address: { city: 'Sofia', street: 'Aleksander Malinov' }};

var {name, address: {city}} = person;

Page 34: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Destructuring Assignments

Live Demo

Page 35: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Maps and Sets

Page 36: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Maps and Sets ES6 supports maps and sets natively They do pretty much the same as

associative arrays, but in cleaner way:

let names = new Set();names.add('Doncho');names.add('Nikolay');names.add('Ivaylo');names.add('Evlogi'); names.add('Doncho'); // won't be added

Page 37: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

Maps and SetsLive Demo

Page 38: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 Modules

Page 39: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 Modules ES6 supports modules

A way to write JavaScript in different files Each file has its own scope (not the

global) Each file decides what to export from its

module Export the objects you want from a

module:

module.exports = { Person: Person, Mammal: Mammal}

To use the module in another file:

import classes from './persons'import {Mammal, Person} form '.persons'

persons.js

Page 40: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

ES6 ModulesLive Demo

Page 41: New features: classes, generators, iterators, etc. Telerik Academy Plus  JavaScript.Next.

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

JavaScript.next

http://academy.telerik.com