JavaScript имеет классы?

Линия

WFLYSRV0220: Server shutdown has been requested via an OS signal

сообщает, что вы получаете сигнал выключения с сервера. См. Также https://developer.jboss.org/wiki/MysteriousShutdowns . Предполагается, что вы используете опцию Java -Xrs, чтобы получать меньше сигналов.

62
задан Glycerine 27 July 2017 в 19:31
поделиться

6 ответов

Технически утверждение «JavaScript не имеет классов» верное.

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

90
ответ дан 24 November 2019 в 16:43
поделиться

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
-1
ответ дан 24 November 2019 в 16:43
поделиться

AFAIK Javascript использует концепцию прототипа, а не объектно ориентированный объект. Это означает, что вы не можете использовать типичные концепции ООП, такие как наследование или полиморфизм.

-8
ответ дан 24 November 2019 в 16:43
поделиться

Послушайте выступление Дугласа Крокфорда здесь:
http://developer.yahoo.com/yui/theater/video.php?v=crockonjs-2

Он прямо отвечает на ваш вопрос в своей презентации:

Самая спорная особенность языка - это способ наследования, который радикально отличается от практически всех других современных языков. В большинстве языков используются классы - я называю их «классическими языками», а в JavaScript - нет. JavaScript не требует классов. Используются прототипы. Люди с классической подготовкой, которые смотрят на язык, говорят: ну, этого недостаточно. У вас нет занятий, как вы можете что-то сделать? Как вы можете быть уверены, что структура вашей программы будет работать? И они никогда этого не преодолеют. Но оказывается…

7
ответ дан 24 November 2019 в 16:43
поделиться

В Javascript практически все является объектом (объекты могут наследоваться от других объектов). В нем нет классов в классическом смысле.

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

8
ответ дан 24 November 2019 в 16:43
поделиться

Под словами "язык X имеет классы" люди обычно подразумевают поддержку объектно-ориентированного программирования.

Да, Javascript является объектно-ориентированным языком.

4
ответ дан 24 November 2019 в 16:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: