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

Английский оригинал Перевод на русский

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

### Класс

a_popova 03.10.17 в 15:02

0

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)).

a_popova 03.10.17 в 15:04

0

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

a_popova 03.10.17 в 15:05

0

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

Tomatoknight 05.10.17 в 18:21

2

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

a_popova 03.10.17 в 15:06

0

- [Понимание прототипов в 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)

a_popova 03.10.17 в 15:06

0

#### Примеры

a_popova 03.10.17 в 15:07

0

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

a_popova 03.10.17 в 15:07

0

```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;
}
```

a_popova 03.10.17 в 15:07

0

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

a_popova 03.10.17 в 15:07

0

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
```

a_popova 03.10.17 в 15:09

0

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

a_popova 03.10.17 в 15:10

0

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

a_popova 03.10.17 в 15:10

0

- [Понимание прототипов в 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)

a_popova 03.10.17 в 15:10

0

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

a_popova 03.10.17 в 15:10

0

- [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)

a_popova 03.10.17 в 15:11

0
Минутку...