【发布时间】:2023-03-04 18:15:02
【问题描述】:
在 javascript 中,如果我有 2 个字符串 myApp 和 my-app 并被告知 myApp 实际上是扩展 HTMLElement 的类的名称,而 my-app 是该类的标记名,我该怎么做使用 JavaScript 来验证(假设该类已经定义)?
如果确实已经定义,基本上测试应该通过
class myApp extends HTMLElement {
constructor() {
super();
}
}
customElements.define('my-app', myApp);
基本上,它需要检查 myApp 是一个类并且确实扩展了 HTMLElement(尽管它可能会扩展其他东西,例如 Polymer.Element 等,但最终,它必须扩展 @987654330 @)。
其次,它必须检查my-app是那个类的标签名。
如何在 javascript 中做到这一点?
我试过eval("myApp"),但没用。
【问题讨论】:
-
对于第一部分,如果 myApp 的祖先中有 HTMLElement,
myApp.prototype instanceof HTMLElement应该返回 true -
我不能 100% 确定 Polymer.Element 是否扩展了 HTMLElement,所以我可能会做
myApp.prototype instanceof HTMLElement || myApp.prototype instanceof Polymer.Element。但其他部分我不知道。 -
我试过
Polymer.Element instanceof HTMLElement,这显然是错误的。 -
如果 myApp 扩展 Polymer.Element 扩展 HTMLElement,那么 HTMLElement 仍然是 myApp 的祖先 ... instanceof 不会检查一级祖先:p
-
“否决”描述?如果您要连续“否决”,您也可以留下您的理由。既然你的行为显然有合理的理由,为什么还要自己保密?
标签: javascript string class web-component custom-element