#javascript #symbols
#javascript #символы
Вопрос:
Я использую библиотеку, класс которой импортируется из SymbolObservable
import SymbolObservable from 'symbol-observable';
class Spring {
[SymbolObservable] = () => {
return {
subscribe: observer => {
function notify(spring) {
observer.next(spring.getCurrentValue());
}
const listener = {
onSpringActivate: notify,
onSpringUpdate: notify,
onSpringAtRest: notify,
};
this.addListener(listener);
return () => this.removeListener(listener);
},
[SymbolObservable]() {
return this;
},
};
};
}
Что именно здесь происходит? В документации мало что говорится. Я не вижу ни одного subsrcribe
нигде в библиотеке. Что делает [SymbolObservable] = () => {}
в классе? Что это делает
[SymbolObservable]() {
return this;
},
Ссылка на библиотеку
Комментарии:
1. Как бы то ни было, это пони-заполнение для
Symbol.observable
. Прокрутка страницы вниз дает некоторое представление о том, что именноObservable
такое и почему они полезны.2. Вы понимаете синтаксис и смущены только семантикой
SymbolObservable
?3. Я только что прочитал о синтаксисе, но я не понимаю, что происходит, когда ` [SymbolObservable] = () => {` определено в классе. И отсутствие подписки где-либо в библиотеке также смущает меня. Я только что добавил ссылку на библиотеку.
4. @raj Что вы подразумеваете под «что происходит»? Это поле класса, создающее функцию arrow для этого свойства в конструкторе. Больше ничего. Аналогично,
[SymbolObservable]() { return this; }
очевидно, определяет метод с символьным ключом, который возвращает сам экземпляр при вызове. Вы спрашиваете, почему они это делают?5. @Bergi Ya зачем они это делают? Какова цель
SymbolObservable
, а не обычного метода класса.