Готовый перевод Modern JS Cheatsheet / Памятка по современному JavaScript: Классы

### Класс

JavaScript - это язык, [основанный на прототипах](https://en.wikipedia.org/wiki/Prototype-based_programming) (в то время как, например, Java - язык, [основанный на классах](https://en.wikipedia.org/wiki/Class-based_programming)). В обновлении ES6 представлены классы JavaScript, которые являются синтаксическим сахаром для наследования на основе прототипов, а **не** новой моделью наследования классов ([ref](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)).

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

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

- [Понимание прототипов в JS - Yehuda Katz](http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/)
- [Простой английский путеводитель по прототипам - Sebastian Porto](http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/)
- [Наследование и цепочка прототипов - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)

#### Примеры

До ES6, синтаксис на основе прототипов:

```js
var Person = function(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.stringSentence = function() {
return "Hello, my name is " + this.name + " and I'm " + this.age;
}
```

С ES6, синтаксис на основе классов:

constructor(name, age) {
this.name = name;
this.age = age;
}
stringSentence() {
return "Привет, меня зовут " + this.name + " и мне " + this.age;
}
}
const myPerson = new Person("Маша", 23);
console.log(myPerson.age) // 23
console.log(myPerson.stringSentence()) // "Привет, меня зовут Маша и мне 23
```

#### Дополнительные материалы

Для понимания прототипов:

- [Понимание прототипов в JS - Yehuda Katz](http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/)
- [Простой английский путеводитель по прототипам - Sebastian Porto](http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/)
- [Наследование и цепочка прототипов - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)

Для понимания классов:

- [ES6 Глубокое изучение классов - Nicolas Bevacqua](https://ponyfoo.com/articles/es6-classes-in-depth)
- [Особенности ES6 - Классы](http://es6-features.org/#ClassDefinition)
- [Классы JavaScript - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)

Переведено на Нотабеноиде
http://notabenoid.org/book/70916/381888

Переводчики: a_popova, Tomatoknight

Настройки

Готово:

100.00% КП = 1.1