Почему нет “классов” в языке сценариев JavaScript?

Поскольку это довольно известно, язык сценариев JavaScript (ej. node.js: сторона сервера или angular.js), они не используют классы, как в Java или Пайтоне.

Но... Каков мотив, которым язык сценариев JavaScript не имеет классов?

P.S: Сейчас язык сценариев JavaScript не язык рукописного шрифта. Сейчас это язык совсем, так как мы можем использовать такие главные файлы как MVC.

8
задан 24.01.2017, 18:40
4 ответа

Мы идем по частям. Язык сценариев JavaScript - язык scripting, типично интерпретированного языка программирования. Код, который ты пишешь в языке сценариев JavaScript, будет переведен в язык машин посредством переводчика, самый известный переводчик - V8 (engine в действительности, но мы будем лгать немного, чтобы поддерживать простые вещи) Google.

Итак, что язык был интерпретирован, или что ввел шаг компиляции (или больше) как в случае Java или C ++, не направляет меньше язык. У типично интерпретированных языков есть определенные преимущества и невыгоды напротив типично составленных языков.

С другой стороны, когда nombrás классы, вы передаете тебя к парадигме программирования. Парадигма определяет способ фокусировать разрешение проблемы. Java, например, - язык, ориентируемый на объекты. Он выдвигает тебе, что ты сфокусировал разрешение проблем посредством использования объектов, которые работают между если.

Программирование, ориентируемое на объекты не единственный способ программировать, который существует. Также существует, например, функциональное программирование, в котором, "основном блоке" строительства, это функции. Например, язык Хаскелл - язык чисто функционально.

Но также есть случаи как Пайтон, язык сценариев JavaScript и C ++, что являются языками мультипарадигмой, так как они позволяют тебе решать проблемы используя различные подходы (POO, повелительное программирование, функциональное программирование).

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

Недавно, с последней версией нового стандарта языка сценариев JavaScript (ECMAScript 6), присоединилось немного, что говорит ему "синтаксический сахар", над этим программированием, ориентируемым на прототипы, которое запутывает начинающих программистов, или что приходят из языков как Java:

class MiClase {
   constructor (x, y) {
     this.x = x;
     this.y = y;
   }

   saludar (nombre) {
     console.log(´Hola, ${nombre}! has dicho que x es ${this.x} e y es ${this.y};
   }
}

const mi_objeto = new MiClase(5, 6);
mi_objeto.saludar('Sarasa');

Но ничто не вынуждает тебя в тебя, как программист - и поэтому, ничто не вынуждает программистов, которые разрабатывают Угловой, - чтобы не использовать ничего из этого. У языка сценариев JavaScript не было классов, потому что у него нет, почему иметь их, таким же образом как у Хаскелла даже нет циклы for. Каждый язык говорит тебе "я предлагаю тебе, что проблемы подходы, более или менее, таким образом". Будь в тебе какого способа вы выбираете программировать.

С другой стороны, MVC - главный файл "архитектуры", а именно, главный файл организации приложения / проекта, в котором они говорят тебе, что интерфейс должен быть отделенным от логики, и в свою очередь, отделенная от моделей, которые позволяют тебе соглашаться на данные. Есть различные варианты этого главного файла, и не имеет ничего общего с парадигмами программирования, если, так как отделять таким образом (или сходный способ) компоненты программы - достаточно общее понятие, которое предстает перед ним любому программисту посредственно опытно. Podés, использовать главный файл MVC, не даже используя класс.

В настоящее время в NodeJS, podés использовать синтаксический сахар, чтобы создавать "классы" (внизу они продолжают быть прототипами!: O). Всегда он был "язык совсем", и он это продолжит будучи, как любой другой язык программирования. У него есть Ваши хорошие вещи, и плохие вещи.

23
ответ дан 24.11.2019, 13:05
  • 1
    хороший explicaci и # 243; n и позиция вЃє1. – Gytree 17.10.2016, 07:31
  • 2
    @Emilio Относительно " Качество t и # 232; cnica контента " я был похож и # 243; превосходный и vot и # 233; +1. Но отвечая в это и #250; ltimo, что agregastes, это стиль, который ищется ac и # 225;: " не используй подписи, taglines, или типов привета . ". Идея состоит в том, чтобы переходить к делу и предотвращать текст, который не был бы ответом в s и # 237;. Он не s и # 243; это автор вопроса, в которого он est и # 225; s когда пишут, нас много м и # 225; в. Y, если ты parec и # 237; в который hab и # 237; в который добавлять, что любое сомнение предупредило тебя, это pod и # 237; чтобы идти в комментарии. Я надеюсь, что понимают, но если не, возможно обсуждать в Стакк Оверфлов Цель в espaГ±ol . Я посылаю тебе объятие;-) – Mariano 17.10.2016, 13:53
  • 3
    @Mariano он и # 236; это, и я понимаю, что он говорит " saludos" но я упоминаю тебя: " Каждый вклад, что ты сделал уже эту “firmado” с твоей карточкой пользователя в твоем профиле. Эта карточка формирует постоянную ссылку в твою страницу пользователя. Если ты используешь добавочную подпись или tagline, будет перемещено во вследствие, который создавать, и # 225; больше шум в ответах и вопросах. и quot;. Я начиная с этого понимаю, что я могу приветствовать, adem и # 224; s у меня не выходит не приветствовать, он как. и #191; из-за qu и # 232; нет?... равный ах и # 236; я это издаю, немного я calent и # 232; но имей и # 232; s raz и # 242; n... он не шел на edit;) – Emilio Grisolía 17.10.2016, 16:04
  • 4
    Seg и # 250; n мой opini и # 243; n Javascript не интерпретированный язык . По крайней мере, не в чувстве, в котором он фигурирует в этом definici и # 243; n es.wikipedia.org/wiki/Int%C3%A9rprete_ (inform%C3%A1tica) , Что compilaci и # 243; n будьте autom и # 225; костариканская и давайте не будем видеть составленного (который остается в cach и # 233;) он не делает это менее составленным. Если он был интерпретирован podr и # 237; чтобы прокручивать изображение в окне, хотя у него были ошибки синтаксиса в линиях, что в и # 250; n они не были интерпретированы и это не происходит. (также это это не php ни другие сходные типов деньги и # 225; обезьяны) – Emilio Platzer 18.10.2016, 21:53
  • 5
    Я не был похож и # 242; в больше м и # 236; nimo благоразумный навязывать из-за способа дискуссию человеку на уровне такой глубокой детали, что в и # 249; n я не приобрел и # 242; опыт, необходимый, чтобы замечать, что язык programaci и # 242; n " это не меньше язык или больше язык, чем другой из-за того, что не может осуществлять patr и # 242; n MVC". Aclar и # 232; что является языком " t и # 236; picamente interpretado" потому что язык сценариев JavaScript не est и # 224; ограниченный s и # 242; это в современные engine тип V8 и SpiderMonkey; adem и # 224; s оригинально он был интерпретирован. Не считая, что condici и # 242; n " язык scripting" он не зависит от главных файлов архитектуры. – Emilio Grisolía 18.10.2016, 22:28

Чтобы отвечать на вопрос. сначала, как mensionan в комментариях в настоящее время javascript, если он выносит использование классов, но эти были введены в 2015, как говорит на странице mozilla:

This is в new technology, part of the ECMAScript 2015 (ES6) стандарт.

которым классы не были вынесены в javascript до 2015, и даже есть браузеры (выходя из главных, chrome, ffox, opra, и т.д.), что не выносит в расцвет этот стандарт.

И перед этим, если javascript у него не было классов, и мотив (отвечая на твой вопрос) приходит данная, потому что это был разработанный lenguage не, чтобы делать большие программы, а наоборот был язык подумавшим, чтобы добавлять некий тип динамизма к страницам webs, как например меню, эффекты переходов, утверждения клиентов и простые операции, которым не оказывала уважение большая комплексность. которым в Вашем рисунке не была видна необходимость позволять прямое использование ориентации в объекты (она могла состязаться), и в течение многих лет он продолжил так.

Но время прошло и в настоящем мире javascript в направленный один из самых важных языков в Веб рисунке, действительно создают приложения и полные решения в стороне клиента, Графикос, Игры, Механизмы 3d, и т.д., и т.д., и т.д., совсем то, что ты хочешь сделать. I также переместил то, что застало многих javascript, прибудь в сервер, мир увидел рождаться в nodejs, и хороший он не состоит в том, чтобы мне объяснять, что он, потому что это не вопрос. но вопрос, который он позволяет выполнять javascript на сервере, и то, что позволило в язык объединяться с доминирующими стариками этого мира, как это это PHP, Java, c#, python, и т.д. то, что в последние годы это направило очень популярно.

как он говорит большую фразу

большая власть поддерживает большую ответственность

И с ответственностью приходит необходимость создавать более сложные, масштабируемые, стабильные, безопасные приложения и чтобы обобщать надежные используя javascript, необходимо, чтобы язык питался и так как ориентация в объекты в позволенный это в годы, будучи одной из доминирующих парадигм в программировании. из-за, что, что ищется в настоящее время, состоит в том, чтобы форматировать язык. такие языки как TypeScript и CoffeScript - примеры попытки улучшить язык.

И вопрос миллиона, потому что просто не меняется язык, использует один, более богатый синтаксисом или просто лучше, или языком, который уже позволял бы реализовывать очень надежные приложения?,

Итак, потому что идея состоит в том, что язык должен быть вынесенным всеми браузерами или в большинстве своем то, что было войной и головной болью из-за многих лет и javascript уже он вынесен в большинстве, так что решение, которое представил один из больших соперников в этом мире (MCSoft), состоит в том, чтобы делать superset javascript "TypeScript". решение простое давайте делать язык, что мы думаем, что он лучше, и потом ты это преобразовываешь в javascript плоскость, которая была бы вынесена всеми, и все счастливы, в настоящее время есть много похожих решений, как ты например можешь программировать в Golang и Пайтоне, и есть "составители", которые тебе преобразовывает вышеупомянутый код в javascript плоскость.

(есть люди, которые любят javascript, другие просто это ненавидят и это очень разнообразное.)

Ты можешь использовать javascript, (уже есть классы) или просто, научись использовать TypeScript, или добивается составитель для языка того, чтобы уже ты манипулировал, и просто счастливая удача.

8
ответ дан 24.11.2019, 13:05

Нет классов строго говоря, но есть объекты, и может быть использованным для симулировать класс, например:

clase = function(){
	var obj=this;
	obj.propiedadPublica=0;
	obj.metodoPublico = function(txt){metodoPrivado(txt);};
	var propiedadPrivada=1;
	var metodoPrivado = function(txt){
		document.write(txt+propiedadPrivada+", "+obj.propiedadPublica+"<br>");
		propiedadPrivada++;
	};
};
var obj1 = new clase();
var obj2 = new clase();
obj1.propiedadPublica=2;
obj1.metodoPublico("obj1: ");
obj2.metodoPublico("obj2: ");
obj2.propiedadPublica=3;
obj1.metodoPublico("obj1: ");
obj2.metodoPublico("obj2: ");
3
ответ дан 24.11.2019, 13:05
  • 1
    Я не понимаю негатив, хотя верно, что, если существуют классы с 2015, не est и # 225; n вынесенные во всех браузерах, и до настоящего времени был создан эксперт и # 237; этот soluci и # 243; n продолжи функционировать, и во всех браузерах. – Arnau Castellví 21.10.2016, 16:19

Концепция классов, javascript он этим манипулирует на уровне гораздо большем, чем большинство других языков. Они не существуют с точки зрения программирования, ориентируемого на объекты, которая показывается классической формы, не используя размещенное слово ни class ни многий меньше. Javascript обладает способностью интерпретировать функцию как строитель. Условно программисты договорились о том, чтобы писать с прописным инициалом, той функцией, определенной быть строителем, из-за вопросов читабельности. Сейчас, они существуют равно как в остальных языках, способах работать с внутренними данными, даже иметь частные поля. Если хотят, что у класса был публичный признак, просто он высказывается: this.propiedad = valor; или просто ему не присуждается стоимость (но рекомендуемо инициализировать их). Если нужен признак, который был бы лишен, он высказывается обычно: var propiedad = valor;. Другая очень важная вещь, что надо упоминать здесь, - случай прототипов. Эти служат для того, чтобы повторно использовать код в функциях. Если мы создаем метод, этот будет повторяться внутри каждого объекта, который мы создали, однако, используя прототипы, этого будет создан единственный раз и будет использован, когда его потребуют. Возможно делать так: clase.prototype.miFuncion = function() {...}. Доброта, которую нам дает Javascript, - Javascript расширения объекта класса просто добавляя это. Например, если наш класс имеет как признаки, переменные в, b и c, но я хочу, чтобы мой объект имел d, только должен писать obj.d = valor; и автоматически создается переменная d, внутри объекта.

0
ответ дан 24.11.2019, 13:05
  • 1
    expresió n " манипулировать концепцией классов на много уровне mayor" не está обоснованная. Классы - azú car sintá костариканский на прототипах, чтобы иметь частных членов, читать о WeakSets. – Emilio Grisolía 15.11.2016, 16:19