Статические свойства 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 дальше по цепочке прототипов.

Другие вопросы по тегам