В чем отличие свойства Класса и свойства конструктора в 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';
    }
}

В данном случае разницы не будет.

→ Ссылка