#javascript #классы #объекты
Зачем нужно это: function createClass() { this.name = "oneOfMyClasses"; } var obj = new createClass(); Если есть это: class myClass { constructor() { this.name = "oneOfMyClasses"; } } var obj = new myClass(); Какая разница между объявлением класса через function и через class?
Ответы
Ответ 1
На самом деле классы — это "специальные функции", поэтому точно также, как вы определяете функции, вы можете определять и классы. В JavaScript есть отдельные термины для таких объявлений: class declaration function declaration Разница между объявлением функции (function declaration) и объявлением класса (class declaration) в том, что объявление функции совершает подъём (hoisted), в то время как объявление класса — нет. Поэтому вначале необходимо объявить ваш класс и только затем работать с ним. (Источник: Classes) Поднятие задумывалось как общий способ мышления о том, как контекст исполнения (в частности, фазы создания и исполнения) работает в JavaScript. Однако, hoisting может привести и к недоразумениям. Например, hoisting учит, что объявление переменной или функции физически перемещается в начало вашего кода, хотя в действительности этого не происходит. На самом же деле, объявления переменных и функций попадают в память в процессе фазы компиляции, но остаются в коде на том месте, где вы их объявили. Поднятие (hoisted) constructor - специальный метод, служащий для создания и инициализации объектов, созданных с использованием class. Любая функция, вызванная через new становится конструктором и позволяет создать один объект. Также будет полезно почитать: constructor newОтвет 2
// это было function createClass() { ... // когда этого еще не было class myClass { ...Ответ 3
Классы - это по сути синтаксический сахар в ES6. Под капотом все равно все происходит, как будто: function createClass() {
Комментариев нет:
Отправить комментарий