进一步理解javascript对象、数组和哈希表
来源:互联网 发布:淘宝外围活动怎么样 编辑:程序博客网 时间:2024/05/21 09:30
在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直接作为值赋给对象的“哈希表”。
- 第一种类型是scalar(标量),一个单独的string或数字,比如“北京”这个单独的词。
- 第二种类型是sequence(序列),若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。
- 第三种类型是map(映射),一个键/值对(Key/value),又称作hash(散列)或dictionary(字典),比如“首都:北京”。
- 并列的数据之间用逗号(“,”)分隔。
- 映射用冒号(“:”)表示。
- 并列数据的集合(数组)用方括号("[]")表示。
- 映射的集合(对象)用大括号(“{}”)表示。
关于数组与映射的不同,可以看下面这个例子:
var m = {name:"keel",age:5}var a = [m,"sss",3];//以下请求成功定位到name属性alert(m["name"]);alert(a[0]["name"]);//a[0]定位到malert(a[0].name);//以下失败alert(m[0]);//映射无法以数组下标的方式访问
- 从定位到成员的方法来看,映射使用key来定位其中的成员,而数组使用下标,映射无法使用下标定位,同样数组也无法使用key(理所当然,根本就没有key);
- 从表示方法来看,映射可以使用类似对象属性的方式来访问(如:m.name),也可以使用带key的[]方式(如:m["name"],这是javascript一个特例,看上去像数组,实际上仍是映射);但数组仅能使用下标的方式;
- 从顺序来看:数组是有顺序的,映射是无序的;
- 原文:http://www.k99k.com/writes/javascript_object_array.html
- 进一步理解javascript对象、数组和哈希表
- 进一步理解javascript对象、数组和哈希表
- 进一步理解 javascript对象、数组、映射和哈希表
- 深入理解 JavaScript 对象和数组拷贝
- 面向对象进一步理解
- 进一步认识Javascript中window对象的方法和属性以及重写alert方法,控制弹出窗口,frames[]数组
- JavaScript 对象和数组
- JavaScript对象和数组
- [JavaScript]-----对象和数组
- javascript 对象和数组
- JavaScript对象和数组
- JavaScript数组和对象
- JavaScript:对象和数组
- JavaScript对象和数组
- JavaScript对象和数组
- JavaScript 对象和数组
- 进一步理解get和set
- 进一步理解指针2:双指针、指针数组和数组指针
- C#成长史(增、删、查、改)
- Google Analytics乱码产生原因及解决方法
- __FILE__,__LINE__,__FUNCTION__的妙用
- 命令模式的代码实现及优点
- 学习一种新编程语言要做的15个练习
- 进一步理解javascript对象、数组和哈希表
- 今晚最后一节课了...期待
- FxCAD与绘图相关函数说明
- 选择排序
- HDU 1085 - Holding Bin-Laden Captive!
- 项目经理职责
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
- 防止 F5 重复提交
- 在STRUTS中如何通过request获取从HttpURLConnection写出的流对象