ExtJS 有 Ext.each() 函数,但是否还有一个 map() 也隐藏在某个地方?
我很努力,但没有找到任何可以填补这个角色的东西。像 Ext 这样大的 JS 库显然必须具备,这似乎是一件简单而琐碎的事情。
或者当 Ext 真的不包含它时,将它添加到 Ext 的最佳方法是什么?当然,我可以写:
Ext.map = function(arr, f) { ... };
但这真的是正确的方法吗?
ExtJS 有 Ext.each() 函数,但是否还有一个 map() 也隐藏在某个地方?
我很努力,但没有找到任何可以填补这个角色的东西。像 Ext 这样大的 JS 库显然必须具备,这似乎是一件简单而琐碎的事情。
或者当 Ext 真的不包含它时,将它添加到 Ext 的最佳方法是什么?当然,我可以写:
Ext.map = function(arr, f) { ... };
但这真的是正确的方法吗?
至少从 Ext4 开始,包括 Ext.Array.map。
http://docs.sencha.com/extjs/5.0.1/#!/api/Ext.Array-method-map
因为map
它更像是一个实用程序,所以我不明白为什么会有任何特殊的方式将其插入 Ext 命名空间;您建议的方式会足够好,尽管您可能希望这样做:
if(Ext && typeof(Ext.map) == "undefined") { // only if Ext exists & map isn't already defined
Ext.map = function(arr, f) { ... };
}
似乎这样就可以了……但是,我不使用 ExtJS,所以我不知道。我确实看过他们的文档,在这种情况下似乎没有什么特别的事情要做。
看来,我这里的大学正在使用ext-basex,它使用 map() 和其他方法扩展了 Array.prototype。
所以我可以写:
[1, 2, 3].map( function(){ ... } );
问题解决了。
使用 Ext+Prototype 或 Ext+Jquery 等混合库之一怎么样?我已经使用 Extjs+Prototypejs 有一段时间了,它对我在 Extjs 代码中的工作有很大帮助,同时还有更熟悉的prototypejs。
http://extjs.com/products/extjs/build/ 将构建一个自定义 tar/zip 文件,其中包含运行 extjs 和 (prototypejs|jquery|yahooUI) 所需的所有文件。
ExtJS 不会取代 Javascript 语言本身。数组函数不是 ExtJS 核心的重点。但是有一个特殊的 Ext.Array 对象类型。您可以自行扩展它。
编辑:不是 Ext.Array,而只是扩展的 Array 对象。