哪个更好 - Ext.get()或document.getElementById()

时间:2011-12-31 16:35:29

标签: javascript performance extjs extjs3

Ext.get()document.getElementById()在效果方面有何区别? Ext.get()会慢一些,因为它可能会在内部调用document.getElementById()吗?或者使用Ext.get()

有什么特别的优势

6 个答案:

答案 0 :(得分:17)

Ext.get优于getElementById的主要优点是它返回一个Ext.Element实例。此实例不仅包含getElementById将为您提供的DOM节点引用,还会显着扩展它 - 提供一套便捷方法,事件规范化以及消除跨浏览器差异。

在表面上getElementById在获得相同的基本DOM调用之前,只需基于少一个函数就可以在Ext.get上获得一些微小的速度增益。但是,就整体性能而言,在检索之后对元素执行的操作可能比检索本身具有更大的影响。手头有Ext.Element包装可能证明非常有用。

你可能也想看看Ext.fly。此方法类似于Ext.get,但它返回给您一个单独的Ext.Element实例。如果您需要存储该元素供以后使用,那将是没有任何好处,但如果您对独特的DOM节点进行简单的一次性操作,它可能比Ext.get便宜。

答案 1 :(得分:3)

document.getElementById()是原生JavaScript,因此会比Ext.get()

更快

现在为什么Ext.get()就在那里,

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

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

答案 2 :(得分:3)

Ext.get()允许使用String ID,现有HTMLElement或Ext.Element - 因此它更灵活一点。 document.getElementById()仅接受字符串ID。

那就是说,如果满足您的需求,我会使用document.getElementById()。它是浏览器的原生代码,应该更快一点 - 而且只需少量调用即可将自己链接到特定的JavaScript框架。

答案 3 :(得分:3)

在性能方面,原生JS功能总是更快。

但是,我并不是说不使用JS库,它们很棒:

  • 减少编写代码的时间
  • 它使您的代码更具可读性
  • 您编写的代码更少(减少文件大小和下载时间)

最后,也许你甚至可以节省时间,因为更少的代码意味着更快的下载速度,在某些情况下它甚至可以超越性能。

所以是的,使用一个在另一个上是相同的,因为一方面你可以通过性能节省时间(“document.getElementById()”),另一方面可以减少文件大小和下载时间(“Ext。得到()“)。

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

答案 4 :(得分:1)

正如其他人在这里所说的那样,所使用的方法取决于需要,如果你只想获得对某些非Ext目的的dom元素的引用,你也可以使用本机函数,但如果你打算在在Ext上下文中返回的对象,然后Ext.get将返回一个Element引用,它提供了其他方法。

Ext.get是Ext.ComponentManager.get的简写,虽然它是对库函数的调用,可能效率较低,但应注意Ext.Element上有大约180种方法,所以如果你需要这些方法它可能值得包括包装调用。

正如owlness所提到的,Ext.fly()是在你需要对元素执行单个函数时设计的,例如。 Ext.fly("myDiv").hide();而Ext.get()用于获取对元素的引用以供以后使用,例如。 var something = Ext.get("myDiv");然后something.sort(); something.badger(); return something;

答案 5 :(得分:0)

我不熟悉Ext库,但是使用vanilla Javascript,只有少数方法可以获得特定的元素;你可以通过它的ID来获取它,在通过标签名称获取所有元素之后搜索它(这是JQuery如何通过类名来获取元素),或者,HTML5的新功能,通过类名获取元素。如果你有创意,还有其他一些方法;) 假设您没有保存本地参考,只需通过ID获取它是最快的。

所以,如果你要做的就是获取一个元素而不用Ext.js通过该函数调用做的任何事情,那么vanilla Javascript会更快。