从DOM元素引用Javascript对象是一种不好的做法吗?

5
作为前端开发人员的“最佳实践”,使用“控制”属性引用回Javascript对象是不好的吗?
这里是有关该属性的链接:https://developer.mozilla.org/en/XUL/Property/control 我看到很多JavaScript函数使用选择器引用DOM元素,然后通过这种方式执行DOM操作。但是如果我们首先遍历DOM树并拥有DOM元素怎么办?
编辑1:好的,似乎有一些兴趣,但出于某种原因没有贡献。这开始是我和我的同事之间的对话。他担心循环引用和可能丢失引用的情况……这适用于这里吗?我认为只要我们不调用delete <javascript object>就没问题。
编辑2:我找到了这个:JQuery methods and DOM properties 在我目前的世界中,我正在使用Microsoft AJAX库,在其中创建了多个ScriptControls并将它们放置在各种页面上;这些ScriptControls会被页面事件和其他ScriptControls的事件“修改”。当页面需要对DOM元素执行某些操作时,Javascript将使用相应Javascript对象的方法。然而,根据另一个问题,似乎在JQuery中常见的做法是获取DOM元素,然后使用.get(0)从中获取JQuery对象(如果存在)。所以我想这是一场巫术猎人,到目前为止还没有正确的答案来回答我的问题:(我知道我仍然缺少一个示例,但我不确定该如何处理。

我对这些内容几乎一无所知。你是在指垃圾回收吗? - Ryan Kinal
我指的是javascript中的delete运算符。请参阅: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete - Gary
1个回答

0

我不太确定你具体指的是什么。你能提供一个简单的代码示例吗?否则,我认为你的问题有点模糊。无论如何,我会尝试回答:

我不明白为什么会有任何丢失或循环引用。 control 属性只是“控制”DOM元素的ID(字符串),而不是对实际DOM元素的引用。如果你 delete label.control 它将不再与其他DOM元素相关联。


嗨,丹尼尔,抱歉我的问题不够清晰。我很快会提供一个例子来解释我的意思。 - Gary
你似乎把label.controllabel.for混淆了。label.control实际上是一个对于label.for中id所对应的DOM节点或者嵌套在label标签内的第一个控件的引用。我认为delete label.control实际上并没有任何作用。 - Okonomiyaki3000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接