0

Lit 使用这个反应元素类,我的每个 Web 组件都对其进行了扩展。我无法完全理解为什么 elementProperties扩展 Lit 基类的所有 Web 组件上的静态属性(例如)都不相同。

在此处查看示例

为什么这两个类的静态属性不同?我认为静态属性是在类本身上设置的,在本例中为 ReactiveElement。但这里的情况似乎并非如此。我希望与此处elementProperties相同并且工作方式相似。

谁能告诉我我的想法哪里出错了?

更新:

OK 使用typescript重新创建了该行为。所以我认为我需要研究继承和静态属性在 JS 中是如何工作的。

4

1 回答 1

0

所以我认为正在发生的是;

elementProperties 在名为finalize的静态方法中设置

当 finalize 被调用时this是指组件的类而不是反应元素类。所以SimpleGreeting.elementProperties不是ReactiveElement.elementProperties

虽然ReactiveElement.elementProperties存在于SimpleGreeting. Object.getPrototypeOf(Object.getPrototypeOf(SimpleGreeting)).elementProperties. 因为我们在 SimpleGreeting 属性上设置了 elementProperties,所以它本身并不指向ReactiveElement.elementProperties原型链。

于 2021-06-29T08:48:32.357 回答