Демистификация класса в JavaScript

Классы в JavaScript являются препятствием для многих. Многие жалобы на разное поведение класса в JS. В этом посте я попытаюсь объяснить, как класс работает в JS и как добиться поведения, подобного классу, без использования ключевого слова class.

Фото Скотта Умстаттда на Unsplash

Люди с объектно-ориентированным прошлым часто путаются с классами в JS. Часто люди приходят с какими-то предположениями и пытаются связать вещи друг с другом, что хорошо для ускорения нашего понимания. Но попытка связать поведение класса в Java или C ++ с классом в JS скорее сбивает нас с толку, чем упрощает. Я призываю вас не заполнять себя при понимании классов JavaScript (не только для этой статьи).

Мы должны понимать, что JavaScript - это функциональный язык программирования.
и чтобы понять парадигму функционального языка программирования, прошу вас прочитать эту статью. (Я буду ждать)

Все в JavaScript - это функция.

Все в JavaScript - это функция.

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

Конструктор Функция

Функция-конструктор всегда начинается с верхнего регистра позже по соглашению, и мы можем создать экземпляр функции-конструктора, используя ключевое слово new.
Благодаря этим свойствам мы можем добиться поведения класса в JavaScript с помощью функции конструктора.

Имя функции-конструктора должно начинаться с верхнего регистра.
геттер, пример сеттера

Вышеупомянутая функция Person обеспечивает почти такую ​​же функциональность, что и class в Java.

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

Мы можем добавить новые свойства к Class Person с помощью prototype.

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

Но у него есть одна проблема:
свойства ссылочного типа распределяются между экземплярами.

Теперь, когда мы разобрались с функцией конструктора и использованием прототипа. Давайте разберемся, что такое ключевое слово Class.

Класс в JavaScript

Вы можете подумать, что это нечто иное, чем функции конструктора и прототипы, но это не так!

Класс - это просто синтаксический сахар над функциями конструктора.
Не верите? Я так и думал, давайте посмотрим на пример ниже.

Вот как мы пишем класс на JavaScript.

И это после переноса кода на чистый JavaScript (слышал, Babel? Хорошо)

ну, это не полная версия транспилированного кода, есть еще несколько строк, которые я для простоты выделил полосами.

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

Что ж, это лишь верхушка айсберга, потому что настоящая путаница связана не с реализацией класса, люди не понимают этого ключевого слова, лексической области видимости этого и т. Д.

Для более глубокого понимания рассмотрите следующие ссылки.
это , это и это .

Если вам понравилась эта статья, мы будем благодарны за ее аплодисменты.

Следуйте за мной в Twitter @ suhas0101

Suggested posts

Как избежать разрушительных последствий инсульта: уроки семейного опыта.

Как избежать разрушительных последствий инсульта: уроки семейного опыта.

Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.

Мои наиболее используемые ресурсы кодирования

Мои наиболее используемые ресурсы кодирования

На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.

Related posts

Как спасти планету и заработать деньги

Как спасти планету и заработать деньги

Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.

Первая детская книга о кайфе

Первая детская книга о кайфе

(Предупреждение — это сатира, предназначенная для радостной подрывной деятельности — определенно не для детей) Вы видели, как ваши мама и папа прячутся на кухне и курят эти вонючие сигареты. Они говорят вам.

Сбор OSINT для поиска угроз

Сбор OSINT для поиска угроз

Привет, киберлюбители! Добро пожаловать обратно в серию OSINT по поиску угроз. В первой статье я рассказал вам об OSINT и его важности для поиска угроз.

местоимения очень страшные

Это поражает меня Внезапно, как это часто бывает, Это снова и снова на полпути <Нет, не то, что в Тихом океане, ты темно-бордовый, то, что на карнавале> Каждый громкий заголовок…..