Статические свойства Lit / LitElement ReactiveElement
Lit использует этот класс реактивных элементов, который расширяет каждый из моих веб-компонентов. Я не могу понять, почему статические свойства, такие как НЕ одинаковы для всех веб-компонентов, расширяющих базовый класс Lit.
Почему статическое свойство этих двух классов различается? Я думал, что статические свойства были установлены в самом классе, в данном случае ReactiveElement. Но, похоже, здесь дело обстоит не так. Я ожидал
elementProperties
быть таким же и работать как здесь.
Может ли кто-нибудь сказать мне, где я ошибаюсь в своих мыслях?
Обновлять:
ОК воссоздал поведение с машинописным текстом. Поэтому я думаю, что мне нужно изучить, как наследование и статические свойства работают в JS.
1 ответ
Итак, я думаю, что происходит;
elementProperties устанавливаются внутри статического метода с именем finalize
Когда вызывается финализация
this
относится к классу компонента, а не к классу реактивного элемента. Так
SimpleGreeting.elementProperties
нет .
Хотя существует в цепочке прототипов
SimpleGreeting
.
Object.getPrototypeOf(Object.getPrototypeOf(SimpleGreeting)).elementProperties
. Поскольку мы установили elementProperties в самом свойстве SimpleGreeting, это не относится к
ReactiveElement.elementProperties
дальше по цепочке прототипов.