class a {
get b() {
delete this.b;
return this.b = 1;
}
}
var c = {
get b() {
delete this.b;
return this.b = 1;
}
}
console.log(c.b); // works as expected
console.log((new a()).b); // throws error
Приведенный выше код должен работать нормально, но последняя строка выбрасывается.Ленивый геттер не работает в классах
Uncaught TypeError: Cannot set property b of # which has only a getter(…)
Очевидно, что геттер не удаляется в классе, тогда как он отлично работает в объекте. Я нахожусь на последнем стабильном хроме.
Вы не конструктор в классе 'a' – Redu
@Redu Конструктор является необязательным в Js классов. – Achshar
Я не мог найти ссылку после достаточного количества поисковых запросов, поэтому я делаю это комментарием вместо ответа, но я на 95% уверен, что методы в классах становятся неконфигурируемыми и, следовательно, удаляются сбой , Вы можете имитировать это поведение в «обычных» классах. –