Ах, нашел виновника. Это связано с природой this
в JavaScript. Рассмотрим этот пример:
class Hello {
constructor() {
this.hello = "Hello";
}
returnString() {
return this.hello;
}
}
const { returnString } = new Hello();
console.log(returnString());
Это будет лог undefined
. Зачем? - поскольку this
здесь относится к самой функции returnString
при ее деструктурировании, следовательно, undefined
.
Однако это будет работать:
console.log(new Hello().returnString())
Чтобы первый фрагмент работал, нам нужно привязать returnString
к классу, например:
class Hello {
constructor() {
this.hello = "Hello";
this.returnString = this.returnString.bind(this);
}
returnString() {
return this.hello;
}
}
const { returnString } = new Hello();
console.log(returnString());
Надеюсь, это поможет будущим читателям:)