1.前言
Hash对象大致有如下方法:
1) clone():复制已有的Hash对象,返回复制产生的新Hash对象。
2) each(iterator):遍历Hash对象里每个key-value对象的迭代器,其中iterator是一个形如function(pair){}的函数,其中pair就是Hash对象的key-value对象。
3) get(key):根据key返回value,与Java Map的get()方法基本相似。
4) inspect():返回字符串显示Hash对象的key-value对,类似于Java Map的toString()方法。
5) keys():返回Hash对象的全部key组成的数组。
6) values():返回Hash对象的全部value组成的数组。、
7) merge(otherHash):将新的Hash对象合并到原有的Hash对象,返回新的Hash对象。
8) set(key, value):设置一对key-value对,类似于Java Map的put()方法。
9) toObject():将Hash对象转换成一个JavaScript对象,其实Hash对象和JavaScript都是key-value对,因此可以非常方便地相互转换。
10) toQueryString():将Hash对象转换成为查询字符串,这种查询字符串以‘key1= value1&key2=value2’的形式出现。
11) unset(key):删除key所对应的key-value对,执行该方法后返回key所对应的value。
12) update(object):使用object更新当前Hash对象。
2.例子
<!DOCTYPE html>
<html>
<head>
<meta name="author" content="OwenWilliam" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Hash对象 </title>
</head>
<body>
<script src="../../prototype.js" type="text/javascript">
</script>
<script type="text/javascript">
// 定义一个JavaScript对象
var person =
{
name:'owen',
age:29
};
// 将JavaScript对象转换成Hash对象
var h = $H(person);
// 将Hash对象转换成查询字符串。输出:name=owen&age=29
document.writeln(h.toQueryString() + "<br />");
// 测试merge方法
var person =
{
name:'owen',
age:29
};
var teacher =
{
name:'owen.william',
gender:'male'
};
// 将后一个Hash对象merge到前一个Hash对象中
var h = $H(person).merge($H(teacher));
// 输出:name=owen.william&age=29&gender=male
document.writeln(h.toQueryString() + "<br />");
// 直接使用JavaScript对象来更新Hash对象
h.update({age : 30 , subject :"java"});
// 将输出:name=owen.william&age=30&gender=male&subject=java
document.writeln(h.toQueryString() + "<br />");
// 遍历Hash对象的每个key-value对
h.each(function(pair)
{
document.writeln(pair.key + "-->" + pair.value + "<br />");
});
</script>
</body>
</html>