Ext.get()
和document.getElementById()
在效果方面有何区别? Ext.get()
会慢一些,因为它可能会在内部调用document.getElementById()
吗?或者使用Ext.get()
?
答案 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会更快。