2014-01-10 45 views
1

我的任务是维护一些使用大量PrototypeJS的传统前端代码。我对他们在代码中使用的一些东西感到困惑。例如,the documentation描述了这个$H函数,用于创建“散列”并以“经典散列方式”访问属性,该散列方式似乎很简单obj.get('propName')为什么“经典”哈希值有用?

var h = $H({name: 'John', age: 26, country: 'Australia'}); 
// Equivalent to: 
var h = new Hash({name: 'John', age: 26, country: 'Australia'}); 
// Can then be accessed the classic Hash way 
h.get('country'); 
// -> 'Australia' 

这为什么这很有用?我看到它遍布我所维护的代码,并最终决定我需要了解最初的意图是什么更好一点。

+0

他们有几个内置的散列迭代方法。 – dandavis

+0

@dandavis认为你可以澄清?你的意思是迭代像'for(var key in obj)'这样的属性? – Chev

回答

2

Prototype.JS docs

因为JavaScript的性质,每一对象是实际上散列;但Hash添加了许多方法,可以枚举键和值,遍历键/值对,将两个哈希合并在一起,等等。

所以,基本上这是因为那么你可以使用keysvalueseachmergeupdate

+0

啊,我不知何故错过了。非常感谢! – Chev

1

“经典哈希”通常是有用的,因为它提供了快速键 - 值对查找。在计算机科学术语中,算法的复杂性是恒定的,或者O(1)。这意味着您可以立即获取散列中任何键的值。在示例哈希中,键是:名称,年龄,国家

因此,您可以通过调用h.get('name')快速获取名称(约翰),您可以通过调用快速获得他的年龄h.get('age'),您可以通过调用h.get('country')快速获取他的国家(澳大利亚)。

将此数据与存储在列表中的数据进行比较,您必须遍历该数据以查找名称,年龄和国家/地区的值。