You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何引用customElements.define内匿名类的静态变量

你可以直接通过this.constructor访问当前实例对应的类构造函数,该属性不受类是否匿名的影响,作用和你提到的Python中type(self)完全一致。

你代码里的对应行修改为以下写法即可正常获取静态属性:

shadowRoot.appendChild(document.importNode(this.constructor.template, true));

补充说明

  • 静态属性本身支持类继承,如果你后续基于当前匿名类派生新的自定义元素,this.constructor会自动指向实际实例化的子类,比硬编码类名的写法灵活性更高。
  • 不要混淆typeof this和this.constructor:前者返回的是表示实例类型的字符串"object",自然无法访问静态属性;后者直接指向创建该实例的构造函数,可以直接读取挂载在构造函数上的所有静态成员。

完整的可运行代码如下:

window.customElements.define('my-uploader', class extends HTMLElement {
    static template = document.getElementById("TEMPLATE_UPLOADER");

    constructor() {
        super(); // 必须首先调用super()
    }

    /** 自定义组件生命周期钩子 **/
    connectedCallback() {
        let shadowRoot = this.attachShadow({mode: "open"});
        shadowRoot.appendChild(document.importNode(this.constructor.template, true));
    }
})

内容的提问来源于stack exchange,提问作者run_the_race

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:18:04