在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());
由以上这些代码可以看出:
前端时间看了阮一峰的 《数据类型与Json格式》 一文,提到在yaml描述数据时,将所有的数据分成三种类型:
可能这三种类型我们都很熟悉,但文中提到的对json的四条规则却正好剖析了javascript描述数据的方式:
有了这四条规则(再加上对function的理解),对于很多看上去非常“诡异”的写法,都可以理解了。因此,一个javascript对象,实际上就是一个数组或是映射。
关于数组与映射的不同,可以看下面这个例子:
var m = {
name:'keel',
age:5
}
var a = [m,'sss',3];
//以下请求成功定位到name属性
alert(m['name']);
alert(a[0]['name']);//a[0]定位到m
alert(a[0].name);
//以下失败
alert(m[0]);//映射无法以数组下标的方式访问
联系客服