<MyRusakov.ru />

Создание приложений для Android с нуля

Создание приложений для Android с нуля

Данный курс научит Вас создавать приложения любой сложности для Android. Курс состоит из 16-ти разделов, из которых Вы узнаете, как создавать свои собственные приложения для Android.

В курсе содержится вся необходимая теория, а также множество практических примеров, в том числе, и из моей личной практики.

Просмотрев данный курс и выполнив упражнения из него, Вы сможете создавать приложения любой сложности для самой популярной мобильной ОС в мире - Android.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Классы JavaScript в ES6

Классы JavaScript в ES6

Классы в JavaScript имеют уникальные функции, которые охватывают динамическую природу JavaScript. В этой статье мы познакомимся с классами в JavaScript вообще и тем, как создавать классы в ES6.

Классы в JavaScript до ES6

До ES6 в JavaScript не было классов. Чтобы имитировать класс, мы часто использовали и продолжаем использовать функцию-конструктор, как показано в примере ниже.

 function SAnimal(type) {
   this.type = type;
  }

  SAnimal.prototype.who = function() {
   console.log(this.type);
  }

  var cat = new SAnimal('Кошка');
  cat.who(); // Кошка

Как эта штука работает?

  • Во-первых, мы создали тип SAnimal как функцию-конструктор, у которой есть свойство type. Метод who() присваивается прототипу, чтобы он мог использоваться всеми экземплярами типа SAnimal.
  • Затем мы создали новый экземпляр типа SAnimal с использованием оператора new. Объект cat, следовательно, является экземпляром класса SAnimal и Object через прототипное наследование.

Современное объявление класса JavaScript

ES6 представил новый синтаксис для создания класса, как показано далее.

 class SAnimal {
   constructor(type) {
    this.type = type;
   }
   who() {
    console.log(type);
   }
  }

  let cat = new SAnimal('Кошка');
  cat.who();

Этот класс SAnimal ведет себя также как и тип SAnimal в предыдущем примере. Однако вместо использования функции конструктора мы определяем конструктор внутри класса.constructor() - это метод, в котором вы можете инициализировать необходимые свойства экземпляра. Метод who() - это метод класса SAnimal. Обратите внимание, что нам не нужно использовать ключевое слово function для объявления методов класса.

Объявление класса в JavaScript - это просто синтаксический сахар для функции-конструктора, поэтому результатом применения оператора typeof к классу SAnimal является функция.

  console.log(typeof SAnimal); // function

Кроме того, связь между методом who() и классом SAnimal такая же, как и отношение между методом who() и SAnimal.prototype в предыдущем примере.

Класс и обычный тип

Несмотря на сходство между классом и пользовательским типом, определенным с помощью функции-конструктора, здесь есть некоторые важные отличия.
Во-первых, объявления классов не поднимаются (not hoisted), как объявления функций. Например, если вы поместите следующий код до фактического объявления класса SAnimal, вы получите ReferenceError.

  let dog = new SAnimal('Собака'); // Uncaught ReferenceError: SAnimal is not defined

Во-вторых, весь код внутри класса выполняется в режиме "strict mode" автоматически, и вы не можете изменить это поведение.
В-третьих, методы класса не перечислимы. Напротив, если вы используете функцию конструктора, вам нужно использовать метод Object.defineProperty(), чтобы сделать свойство неперечислимым.
В-четвертых, вызов конструктора класса без оператора new приведет к ошибке, как показано в следующем примере.

  let duck = SAnimal('Утка');
  // Непойманное исключение TypeError: Конструктор класса SAnimal не может быть вызван без оператора new

Анонимный класс в JavaScript ES6

Подобно функциям, классы также могут иметь форму выражений. Выражение класса не требует идентификатора после ключевого слова class – анонимный класс. Вы можете использовать выражения классов в объявлениях переменных и передавать их в функцию в качестве аргумента.
Вот выражение класса, которое эквивалентно предыдущему примеру класса SAnimal.

  let SAnimal = class {
   constructor(type) {
    this.type = type;
   }
   identify() {
    console.log(this.type);
   }
  }

    let duck = new SAnimal('Утка');

  console.log(duck instanceof SAnimal); // true
  console.log(duck instanceof Object); // true

  console.log(typeof SAnimal); // function
  console.log(typeof SAnimal.prototype); // function

Подобно выражениям функций выражения класса не поднимаются, т.е. недоступны выше места своего первоначального объявления.

Объекты первого класса

Класс JavaScript является объектом первого класса. Это означает, что вы можете передать класс в функцию, вернуть его из функции и присвоить его переменной.

 function factory(сlazz) {
   return new clazz();
  }

  let greeting = factory(class {
   sayHello() {
    console.log(' Здравствуй');
   }
  });

  greeting.sayHello(); // 'Здравствуй'

В этом примере функция factory() принимает выражение анонимного класса в качестве аргумента. Она создает экземпляр этого класса и возвращает его.

На этом все, а в следующей статье мы продолжим обсуждение использования классов в JavaScript ES6.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.