最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript对象、数组和哈希表

来源:动视网 责编:小采 时间:2020-11-27 20:30:31
文档

JavaScript对象、数组和哈希表

JavaScript对象、数组和哈希表:在javascript中,对象实际上就是一个哈希表,比如下面这个user对象:function user(n, a) { this.name = n; this.age = a; this.toString = function() { return "Name:" + this.name + ", A
推荐度:
导读JavaScript对象、数组和哈希表:在javascript中,对象实际上就是一个哈希表,比如下面这个user对象:function user(n, a) { this.name = n; this.age = a; this.toString = function() { return "Name:" + this.name + ", A


在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直接作为值赋给对象的“哈希表”。

前端时间看了阮一峰的 《数据类型与Json格式》 一文,提到在yaml描述数据时,将所有的数据分成三种类型:

第一种类型是scalar(标量),一个单独的string或数字,比如“北京”这个单独的词。

第二种类型是sequence(序列),若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。

第三种类型是map(映射),一个键/值对(Key/value),又称作hash(散列)或dictionary(字典),比如“首都:北京”。

可能这三种类型我们都很熟悉,但文中提到的对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]);//映射无法以数组下标的方式访问

从定位到成员的方法来看,映射使用key来定位其中的成员,而数组使用下标,映射无法使用下标定位,同样数组也无法使用key(理所当然,根本就没有key);

从表示方法来看,映射可以使用类似对象属性的方式来访问(如:m.name),也可以使用带key的[]方式(如:m["name"],这是javascript一个特例,看上去像数组,实际上仍是映射);但数组仅能使用下标的方式;

从顺序来看:数组是有顺序的,映射是无序的;

文档

JavaScript对象、数组和哈希表

JavaScript对象、数组和哈希表:在javascript中,对象实际上就是一个哈希表,比如下面这个user对象:function user(n, a) { this.name = n; this.age = a; this.toString = function() { return "Name:" + this.name + ", A
推荐度:
标签: js 对象 javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top