哪个更好- Ext.get() 还是 document.getElementById()?

10
在性能方面,Ext.get()document.getElementById()有何不同?Ext.get()可能内部调用document.getElementById(),它会比document.getElementById()慢吗?或者使用Ext.get()是否有任何特定的优势?

document.getElementById() == Ext.get().dom - Jaider
6个回答

18

使用Ext.get相较于getElementById的主要优势是它返回一个Ext.Element实例。该实例不仅包含了getElementById给你的DOM节点引用,还显著地扩展了它——提供了一套方便的方法、事件归一化以及消除跨浏览器差异。

表面上看,getElementById可能比Ext.get稍微快一点,仅因为在达到基本的DOM调用之前少了一个函数。然而,就整体性能而言,检索后你对元素所做的事情可能比检索本身更有影响。拥有Ext.Element封装程序可能会证明非常有益。

您可能也需要查看Ext.fly。这个方法与Ext.get类似,只是它返回给您一个单例的Ext.Element实例。如果您需要存储元素以供以后使用,那么这种方法就没什么用处了,但如果您正在针对唯一的DOM节点进行简单的一次性操作,那么它可能比Ext.get更便宜。


3

document.getElementById()是原生的JavaScript,因此比Ext.get()更快。

那么为什么会有Ext.get()呢?

document.getElementById()返回的是一个DOM元素,而Ext.get()返回的是一个适用于链接目的的Ext对象。

这也是为什么jQuery有一个$("#elm_id")的原因。请注意,Ext.get()也更容易输入 :)


3

Ext.get()允许使用字符串ID、现有的HTMLElement或Ext.Element,因此它更加灵活。而document.getElementById()只接受字符串ID。

话虽如此,如果document.getElementById()能够满足您的需求,我建议您使用它。它是浏览器本身提供的,并且应该更快一些 - 这样您就不必将自己限制在特定的JavaScript框架中了,少了一次函数调用。


3

就性能而言,本地JS函数始终会更快。

然而,我并不是说不要使用JS库。它们很棒,因为它们:

  • 减少了编写代码的时间
  • 使您的代码更易读
  • 您需要编写的代码更少(减小文件大小和下载时间)

最终,或许您甚至会节省时间,因为较少的代码意味着更快的下载速度,在某些情况下甚至可能超过性能。

所以,使用其中之一都是相同的,因为一方面通过性能(“document.getElementById()”)节省时间,另一方面通过减小文件大小和下载时间(“Ext.get()”)节省时间。

您可以同时使用两者,不应该有任何明显的区别。


1

正如其他人在这里所提到的,使用的方法取决于需要,如果你只想获取一些非 Ext 目的的 dom 元素的引用,你可以使用原生函数,但是如果你打算在 Ext 上下文中对返回的对象执行操作,则 Ext.get 将返回一个 Element 引用,该引用提供了其他方法。

Ext.get 是 Ext.ComponentManager.get 的简写,虽然它是对库函数的调用,可能效率较低,但应注意到在 Ext.Element 上有 ~180 个可用方法,因此如果你需要它们,则包含包装器调用可能是值得的。

如 owlness 所提到的,当你需要在元素上执行单个函数时,例如 Ext.fly("myDiv").hide();,则使用 Ext.fly(),而当你需要引用元素以备后用时,则使用 Ext.get(),例如 var something = Ext.get("myDiv");,然后可能是 something.sort(); something.badger(); return something;


0

我不熟悉Ext库,但使用原生JavaScript只有少数几种方法可以获取特定元素;您可以通过其ID获取它,通过标签名称获取所有元素后搜索它(这是JQuery获取类名元素的方式),或者在HTML5中新添加的按类名获取元素。如果您有创意,还有其他几种方法;)

假设您没有保存本地引用,仅通过ID获取它是最快的。

因此,如果您只是想获取元素而不执行Ext.js通过该函数调用的任何操作,那么原生JavaScript将更快。


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