Что такое класс в мире языка программирования?
Класс дает план создания объектов, предоставление начальных значений для состояния (переменных членов) и реализаций поведения (функции или методов членов))
По умолчанию почти все объектно-ориентированные языки (Python, Java, C ++ ..). Они предоставляют способ создать объекты с некоторым состоянием и поведением.
Пример в Python:
# Class declaration class Train: def __init__(self): self._source = "" self._destination = "" def set_source(self, source): self._source = source def set_destination(self, destination): self._destination = destination def go(self): print("Going from %s to %s"%(self._source, self._destination)) # Instantiation train = Train() train.set_source("Kadapa") train.set_destination("Chennai") train.go()
Но JavaScript не имеет такой функции в старые дни до ES6. Таким образом, разработчики придумали такой шаблон, как ниже, используя силу закрытия в JS.
Пример в JavaScript – реализация 1:
// class-ish declaration function Train() { var _source = "" var _desination = "" function set_source(source) { _source = source } function set_destination(destination) { _desination = destination } function go() { console.log(`Going from ${this._source} to ${this._desination}`) } return { set_source: set_source, set_destination: set_destination, go: go } } // Instantiation train = Train() train.set_source("Kadapa") train.set_destination("Chennai") train.go()
Это дает то же самое, что и другие языки программирования. Но это не так эффективно, потому что каждый экземпляр поезда будет держать всю копию всех функций и переменных.
Таким образом, ниже код находится идеальная разработчики реализации в JS, используя силу прототипов.
Пример в JavaScript – реализация 2:
// class-ish declaration function Train() { this._source = "" this._desination = "" } Train.prototype.set_source = function(source) { this._source = source } Train.prototype.set_destination = function(destination) { this._desination = destination } Train.prototype.go = function() { console.log(`Going from ${this._source} to ${this._desination}`) } // Instantiation train = new Train() train.set_source("Kadapa") train.set_destination("Chennai") train.go()
Приведенный выше код будет использовать бенфит, которые мы получаем от прототипов и конструкторов функций в JS. Таким образом, все экземпляры поезда будут иметь другую копию участников (источник, назначение), но единственная копия методов для всех экземпляров.
Поскольку нам нужно много сделать эту технику, чтобы создать такие объекты, как класс. JS Core Team добавила класс
Зарезервированное ключевое слово для JS, чтобы облегчить нашу жизнь. Под капотом он делает то же самое, что и наш прототип. Это просто синтаксический сахар в JavaScript.
Моя любимая реализация класса
// class declaration class Train { constructor(){ this._source = "" this._desination = "" } set_source(source) { this._source = source } set_destination(destination) { this._desination = destination } go() { console.log(`Going from ${this._source} to ${this._desination}`) } } // Instantiation train = new Train() train.set_source("Kadapa") train.set_destination("Chennai") train.go()
Оригинал: “https://dev.to/pavancse17/history-of-classes-in-js-21f4”