从DOM元素获取javascript对象

从DOM元素获取javascript对象,javascript,dom,Javascript,Dom,假设我创建一个javascript类,如下所示: class DivClass { constructor () { this.div1 = document.createElement('div') this.div1.id = 'div1' } } var divObject = new DivClass() parentDiv.appendChild(divObject.div1) 稍后,我将实例化该类,如下所示: class DivClass { cons

假设我创建一个javascript类,如下所示:

class DivClass {
  constructor () {
    this.div1 = document.createElement('div')
    this.div1.id = 'div1'
  }
}
var divObject = new DivClass()
parentDiv.appendChild(divObject.div1)
稍后,我将实例化该类,如下所示:

class DivClass {
  constructor () {
    this.div1 = document.createElement('div')
    this.div1.id = 'div1'
  }
}
var divObject = new DivClass()
parentDiv.appendChild(divObject.div1)
DIV最终出现在DOM中

如果我要在DOM中定位'div1'元素,比如说为了参数起见通过getElementById(),那么是否有必要返回负责创建它的javascript'divObject'呢

从我对javascript了解的很少,我有一种感觉,从javascript API到DOM的转换是单向的,这根本不可能

如果我把任何术语弄错了,我会提前道歉,但我对javascript有点陌生,仍然不完全理解DOM/API的关系


任何建议都将不胜感激。

您可以向DIV元素添加对该对象的引用

class DivClass {
  constructor () {
    this.div1 = document.createElement('div')
    this.div1.id = 'div1'
    this.div1.divClass = this;
  }
}

然后,您可以使用
document.getElementById(“div1”).divClass
来获取对象。

根本不可能-正确,除非您建立一些框架来实现这一点。这是不可能的,但您有什么办法?内存中已经有了原始类,因此可以将其放入数据结构中并按名称调用。谢谢你的澄清。这应该是一个问题吗?它似乎没有遵循这个过程,您没有调用
customElements.define()
,而且它不是
HTMLElement
parentDiv.appendChild(divObject)
抛出未捕获的类型错误:未能在“节点”上执行“appendChild”:参数1不是“节点”类型。
parentDiv.appendChild(divObject.div1)
工作正常……如果元素仍然存在于DOM中,垃圾收集器无法清理
DivClass
实例的实例,这难道不会导致内存问题吗?我想这就是jQuery在遇到问题之前一直做的
data()
。。这是出于设计,不是问题。如果您需要能够从DOM元素中获取对象,那么在DOM元素消失之前,不应该清理对象。这就像一个符咒。目前我没有做任何有用的事情,只是试图熟悉DOM和API之间的关系。非常感谢你的建议,也感谢你忽略了上面其他人强调的代码错误。我问了上面的代码错误。我几乎没有发布这个答案,因为我不明白你在做什么。