在javascript中,对象实际上就是一个哈希表,比如下面这个user对象:
function user(n, a) { this.name = n; this.age = a; this.toString = function() { return "Name:" + this.name + ", Age:" + this.age; } } var u = new user("tom", 18); for (var k in u) { alert('key: ' + k + ', value:' + u[k]); }
稍作改动,使用Array对象来代替对象:
var user = new Array(); user["name"]="tom"; user["age"]=18; user["toString"]=function(){ return "Name:" + this.name + ", Age:" + this.age; } alert(user.toString());
更简单的写法:
var u = { "name":"tom", "age":18 } u.toString = function(){return 'Name:' + this.name + ', Age:' + this.age;}; alert(u.toString());
由以上这些代码可以看出:
- 所有的javascript对象,包括Array对象在内实际上就是一个哈希表,属性名称就是哈希表的key,而属性的值就是哈希表的值。
- Array对象与通常意义的数组对象并不相关,通常的数组仅能通过下标来定位,而javascript中的Array却可以像哈希表一个通过key来定位集合中的对象。
- 可以将一个function直接作为值赋给对象的“哈希表”。