class Hamburger{
meat = 0;
constructor(type) {
this.type = type;
}
}
let myHmburger = new Hamburger('classic')
myHmburger.meat // 0
Почему в новом объекте вдруг появилось свойство meat, я ведь не в конструкторе его писал. Как тогда этот код выглядел бы не в es6?
Хотя формально, также как и раньше, в спецификации нет описания полей класса, только методов (подробнее в ответе на вопрос: Описание полей класса ES6), браузеры могут реализовывать описание полей на свое усмотрение.
Например Chrome, помещает описанное поле непосредственно в объект, как будто его объявили в конструкторе через this
class Hamburger{
meat = 0;
constructor(type) {
this.type = type;
}
}
то же, что и
class Hamburger{
constructor(type) {
this.meat = 0;
this.type = type;
}
}
однако другие браузеры могут либо упасть с ошибкой синтаксиса, либо поместить указанное поле в прототип.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как сделать такое добавление блока при нажатии на кнопку добавить блок как здесь, чтобы присваивался id и можно было перемещать блоки