В чем отличие свойства Класса и свойства конструктора в JS?
Есть ли какая-то разница между этими двумя примерами?
class Cat {
constructor() {
this.name = 'Steve';
}
}
и
class Cat {
name = 'Steve';
}
Казалось бы - во втором случае свойство записывается не в сам объект, а в Cat.prototype. Но.. нет. Свойство хранится не в прототипе, а даётся непосредственно объекту, который мы создаём. Получается, различий нет?
Ответы (1 шт):
Автор решения: IT Cat
→ Ссылка
Как оказалось, конкретно в данном случае отличий и вправду нет. Мы добавляем объекту свойства в конструкторе, когда те зависят от передаваемых переменных. Например:
class Cat {
constructor(name) {
this.name = name;
}
}
В случае же, когда свойство создаваемого объекта НЕ зависит от передаваемых конструктору переменных, мы можем объявить свойство вне конструктора. Но это вовсе необязательно.
class Cat {
name = 'Steve';
}
Либо через конструктор:
class Cat {
constructor() {
this.name = 'Steve';
}
}
В данном случае разницы не будет.