Содержание
- 2. ES6 let&const Деструктуризация (массивов и объектов) …Spread-оператор Стрелочные функции Шаблонные строки ООП. Классы. Наследование.
- 3. Классы
- 4. Объявление класса class Название [extends Родитель] { constructor методы }
- 5. Объявление класса class Polygon { constructor(height, width) { this.height = height; this.width = width; } }
- 6. Выражение класса //безымянный var Polygon = class { constructor(height, width) { this.height = height; this.width =
- 7. Создание объекта и прототип Constructor запускается при создании new Object, остальные методы записываются в Object.prototype class
- 8. Создание объекта и прототип function User(name) { this.name = name; } User.prototype.sayHi = function() { console.log(this.name);
- 9. Всплытие (hoisting) Разница между объявлением функции (function declaration) и объявлением класса (class declaration) в том, что
- 10. Статические методы class Point { constructor(x, y) { this.x = x; this.y = y; } static
- 11. Геттеры, сеттеры class User { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } get
- 12. Пример class Rectangle { constructor (width, height) { this._width = width this._height = height } set
- 13. Вычисляемые имена методов class Foo() { myMethod() {} } class Foo() { ['my'+'Method']() {} } const
- 14. Наследование //Только один конструктор, прототип, базовый класс! class Child extends Parent { //TODO logic }
- 15. Пример class Point { constructor(x, y) { this.x = x; this.y = y; } toString() {
- 16. Наследование статических методов class Foo { static classMethod() { return 'hello'; } } class Bar extends
- 17. Super //Используется для вызова функций, принадлежащих //родителю объекта super([arguments]);//вызов родительского конструктора super.functionOnParent([arguments]);
- 18. Пример: вызов конструктора class Polygon { constructor(height, width) { this.height = height; this.width = width; }
- 19. Вызов метода class Foo { static classMethod() { return 'hello'; } } class Bar extends Foo
- 20. Mixins
- 21. Mixins // Абстрактные подклассы (mix-ins) — это шаблоны для классов. //У класса может быть только один
- 22. Пример class Person { ··· } const Storage = Sup => class extends Sup { save(database)
- 23. Пример let MyMixin = (superclass) => class extends superclass { test() { console.log('test from MyMixin'); }
- 24. Symbol
- 25. Тип данных Symbol Уникальный и неизменяемый тип данных, который может быть использован как идентификатор для свойств
- 26. Тип данных Symbol let isAdmin = Symbol("isAdmin"); let user = { name: "Вася", [isAdmin]: true };
- 27. Тип данных Symbol Свойство, объявленное через символ, не будет видно в for-in, Object.keys, Object.getOwnPropertyNames, также не
- 28. Тип данных Symbol let user = { name: "Вася", age: 30, [Symbol.for("isAdmin")]: true }; //в цикле
- 29. Глобальные символы Глобальный реестр символов позволяет иметь общие глобальные символы, которые можно получить из реестра по
- 30. Встроенные символы (Well-known)
- 31. Promise
- 32. Понятие промиса Объект, используемый как заглушка для результата некоего отложенного (и асинхронного) вычисления
- 33. callback hell getData(function(a){ getMoreData(a, function(b){ getMoreData(b, function(c){ getMoreData(c, function(d){ getMoreData(d, function(e){ ... }); }); }); });
- 34. Синтаксис new Promise(executor); new Promise(function(resolve, reject) { ... }); // onFulfilled – срабатывают, когда promise в
- 35. Алгоритм Код, которому надо сделать что-то асинхронно, создаёт объект promise и возвращает его Внешний код, получив
- 36. Навешивание обработчиков promise.then(onFulfilled, onRejected); //onFulfilled – функция, которая будет вызвана с результатом при resolve //onRejected –
- 37. Метод then Метод возвращает Promise и принимает два аргумента, callback-функции для случаев выполнения и отказа соответственно
- 38. Метод catch Для того, чтобы поставить обработчик только на ошибку, вместо .then(null, onRejected) можно написать .catch(onRejected)
- 39. throw в промисах Синхронный throw – то же самое, что reject let p = new Promise((resolve,
- 40. Эмуляция асинхронности let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve("result"); }, 1000);
- 41. Еще пример var promise = new Promise(function(resolve, reject) { console.log('in Promise constructor function'); setTimeout(function() { console.log('in
- 42. Promise после reject/resolve – неизменны let promise = new Promise((resolve, reject) => { // через 1
- 43. Промисификация function httpGet(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', url,
- 44. Метод Promise.resolve Метод возвращает Promise, выполненный с переданным значением. Если переданное значение является thenable (имеет метод
- 45. Пример 1 Promise.resolve("Success").then( function(value) { console.log(value);//"Success" }, function(value) { //не будет вызвана } );
- 46. Пример 2 var p = Promise.resolve([1,2,3]); p.then(function(v) { console.log(v[0]);//1 });
- 47. Пример 3 var original = Promise.resolve(true); console.log(original);//Promise {resolved: true} var cast = Promise.resolve(original); cast.then(function(v) { console.log(v);//true
- 48. Метод Promise.reject // Метод возвращает объект Promise, //который был отклонен по указанной причине Promise.reject(reason);
- 49. Метод Promise.all Возвращает обещание, которое выполнится тогда, когда будут выполнены все обещания, переданные в виде перечисляемого
- 50. Пример 1 var p1 = Promise.resolve(3); var p2 = 1337; var p3 = new Promise((resolve, reject)
- 51. Пример 2 var p1 = Promise.resolve(3); var p2 = Promise.reject("Promise Reject"); var p3 = new Promise((resolve,
- 52. Метод Promise.race Метод возвращает выполненое или отклоненное обещание, в зависимости от того, с каким результатом завершится
- 53. Пример 1 var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 500, "один"); }); var p2 =
- 54. Пример 2 var p1 = Promise.resolve(3); var p2 = Promise.reject("Promise Reject"); var p3 = new Promise((resolve,
- 55. Пример 3 var p3 = new Promise(function(resolve, reject) { setTimeout(resolve, 100, "три"); }); var p4 =
- 56. Пример 4 var p5 = new Promise(function(resolve, reject) { setTimeout(resolve, 500, "пять"); }); var p6 =
- 57. Цепочки промисов something(...) .then(...) .then(...) .then(...); Если очередной then вернул промис, то далее по цепочке будет
- 58. Пример 1 Promise.resolve("Success") .then(x => { console.log("THEN1", x); }) .catch(x => { console.log("CATCH1", x); }) .then(x
- 59. Пример 2 Promise.reject("Fail") .then(x => { console.log("THEN1", x); }) .catch(x => { console.log("CATCH1", x); }) .then(x
- 60. Пример 3 Promise.reject("Fail") .catch(x => { console.log("CATCH1", x); return Promise.reject("B"); }) .then(x => { console.log("THEN1", x);
- 61. Fetch API //Метод fetch: замена XMLHttpRequest let promise = fetch(url[, options]); //url – URL, на который
- 62. Свойства options
- 63. Пример 1 fetch('/article/fetch/user.json') .then(function(response) { console.log(response.headers.get('Content-Type')); //application/json; charset=utf-8 console.log(response.status);//200 return response.json(); }) .then(function(user) { console.log(user.name);//Maks })
- 65. Скачать презентацию