![]() |
| 首页 > 编程 > ajax > JavaScript |
1
1楼 zhldang 2009-05-17
JHelper是由 Zero.Dang 开发的一款开源的OpenSource,它提供了类似Java中的List、Set、Map、Iterator 、StringBuffer以及排序用的SortList、和SortSet等功能
功能介绍: 1. JHelper.Utils工具包 Utils.StringBuffer,// 字串累加,在10000次的字串累加测试中,与" "+" "相比,快13倍 Utils.List, // 序列集合 Utils.SortList, // 有序集合 Utils.Set, // 不包含重复元素的序列集合 Utils.SortSet, // 不包含重复元素的有序集合 Utils.Map // 键值对应的集合 Utils.Iterator // 迭代器 可以用Utils.Comparator进行自定义排序
// List使用:
var list = new JHelper.Utils.List();
list.add("a");
list.get(0); // return "a"
// Map使用
var map = new JHelper.Utils.Map();
map.put("name", "张三");
map.put("name2", "李四");
// 有排序的 SortList 使用
var sortList = new JHelper.Utils.SortList();
sortList.add("C");
sortList.add("a");
sortList.add("0");
sortList.add("A");
sortList.add("E");
sortList.add("A");
sortList.add("1");
// 列印出结果
var iter = sortList.iterator()
while(iter.hasNext()) {
document.write(iter.next() + "<br>");
}
输出的结果:
0
1
A
A
C
E
a
// 自定义排序
var myComparator = function() {
this.compare = function(o1, o2) {
// 降序
return -(JHelper.Utils.compareTo(o1.name, o2.name));
};
};
var sortList = new JHelper.Utils.SortList(new myComparator());
sortList.add({name: "C"});
sortList.add({name: "a"});
sortList.add({name: "0"});
sortList.add({name: "A"});
sortList.add({name: "E"});
sortList.add({name: "A"});
sortList.add({name: "1"});
// 列印出结果
var iter = sortList.iterator()
while(iter.hasNext()) {
document.write(iter.next().name + "<br>");
}
输出结果:
a
E
C
A
A
1
0
//这样就不用在某些情况下自行写那些复杂的JS集合了
// JHelper.Validate验证工具包
var check = new JHelper.Validate();
check.addCheckLength("name", "[姓名]必须在2~20位之间!", 2, 20);
check.addCheckDateCompare("date1", "date2", "起值不可以大于迄值!", "yyyy/MM/dd");
alert(check.checkField() ? "成功" : "失败");
2楼 night_stalker 2009-05-18
用 java 的方式写 js …… 脑子进水了吧。
StringBuffer 是使用 Array.join 实现的,写起来还没有直接用 Array.join 简单,封装个头啊。 map 更是不可理解…… js 的对象已经是 map 了,难道
map.put("name", "张三");
能比 map.name = "张三" 更简单? comparator 更搞笑…… 直接传个闭包不好么,非要封装,人都封装傻了。 iterator 有用吗? 看看“自定义排序”用 Prototype 的写法:(JE 的页面用了 Prototype,你可以直接打开 firebug 贴这段)
"ca0AEA1".toArray().map(function(e){
return {name:e}
}).sort(function(a,b){
return a.name > b.name
}).each(function(e){
document.write(e.name + "<br/>")
})
btw:java 集合框架的实现非常牛,但 api 极其?。包闭持支不为因 ?? B 傻 ? 这个 JHelper 不但 api 脑残,实现也很脑残:stringCompare "字符串比对" 竟然写了 11 行…… 想不通,一个大于号就能做的事情还要重新实现一遍?? 3楼 RednaxelaFX 2009-05-18
嘛嘛,也不用一棒子打死,毕竟还是有Java程序员喜欢"the Java way"的。
SortedList倒是可以弄弄,其它用起来确实还没JavaScript原本的方便。像是前两个例子, // "list"使用
var list = []
list.push('a')
list[0] // return 'a'
// "map"使用
var map = {}
map['name'] = 'john'
map['name2'] = 'smith'
// 列印结果:
for (var i in map) {
document.write(map[i] + '<br />')
}
说到底Java的verbose风格并不太适合JavaScript就是。要这样写JavaScript还不如直接用Java+GWT来写的好。 4楼 jindw 2009-05-18
可以当自己的兴趣,折腾几下,自娱自乐一把。
不过这中做法并不推荐。 http://jindw.javaeye.com/blog/188191 引用 * 不要写那些中看不中用的集合。 不要模仿Java 集合API,去写什么 HashMap,ArrayList。JavaScript不相信这些,这个世界简单才是硬道理。
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| |||||