Javascript 为什么“经典”散列有用?

Javascript 为什么“经典”散列有用?,javascript,hash,hashmap,prototypejs,Javascript,Hash,Hashmap,Prototypejs,我的任务是维护一些使用大量PrototypeJS的遗留前端代码。我对他们在代码中使用的一些东西感到困惑。例如,描述了这个$H函数,该函数用于创建一个散列,并以经典的散列方式访问散列上的属性,这似乎是一个简单的obj.get'propName' 这为什么有用?我看到它在我维护的代码中被广泛使用,最后我决定需要更好地理解它的初衷。来自: 由于JavaScript的本质,每个对象实际上都是一个散列;但是Hash添加了许多方法,可以让您枚举键和值,迭代键/值对,将两个Hash合并在一起,等等 因此,基本

我的任务是维护一些使用大量PrototypeJS的遗留前端代码。我对他们在代码中使用的一些东西感到困惑。例如,描述了这个$H函数,该函数用于创建一个散列,并以经典的散列方式访问散列上的属性,这似乎是一个简单的obj.get'propName'

这为什么有用?我看到它在我维护的代码中被广泛使用,最后我决定需要更好地理解它的初衷。

来自:

由于JavaScript的本质,每个对象实际上都是一个散列;但是Hash添加了许多方法,可以让您枚举键和值,迭代键/值对,将两个Hash合并在一起,等等


因此,基本上这是因为您可以使用键、值、每个、合并、更新等。经典哈希通常很有用,因为它提供了快速的键值对查找。在计算机科学术语中,算法复杂性是恒定的,或者说是O1。这意味着您可以立即获得散列中任何键的值。在示例哈希中,键是:姓名、年龄、国家/地区

因此,你可以通过叫h.get‘name’很快得到约翰的名字,你可以通过叫h.get‘age’很快得到他的26岁,你可以通过叫h.get‘country’很快得到他的国家澳大利亚


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

他们有几种内置的哈希迭代方法。@dandavis您认为可以澄清吗?你是说在obj中迭代var key这样的属性?啊,我不知怎么错过了。非常感谢!
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'