易截截图软件、单文件、免安装、纯绿色、仅160KB

进一步理解javascript对象、数组和哈希表

在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
}
va


相关文档:

JavaScript获得层的高度并实现两个层高度的自适应

var   a = document.getElementById("left");   
var   b = document.getElementById("right");   
if(a.scrollHeight < b.scrollHeight)   
{  
    a.style.height = b.scrollHeight+”px”;
} &nb ......

javascript 打印预览的实现

引自:http://blog.csdn.net/lsj19830812/archive/2007/10/25/1843578.aspx
 a.jsp是要打印的页面
<html>
<head>
<script language="javascript">
function fmtPrint(printPlace,w,h){
var sarg=new Array();
var sdata=document.all.item(printPlace);
sarg[0]=s ......

ASC转汉字,汉字转ASC[Native2Ascii的JavaScript实现]

我们常常在编写Java程序时会用到Properties文件,把一些Message等信息放在Properties文件,但是我们看到的都是一些编码。
 Struts1.1b2的例子中的本国资源文件经过Unicode编码的,所以你如果要和它的运行一样,也必须将你的ApplicationResources_zh进行Unicode编码。有以下两种方法:
①使用jdk的native2ascii工具。 ......

ADF 中OnClick的JavaScript的支持问题

ADF 11g不再支持Onclick等JavaScript,而是采用<af:clientListener>来实现诸如删除某条记录的提示框。
实现方式如下:
 
 function confirmDelete() {
if (confirm('Are you sure you want to delete this record?'))
return true;
else
return false;
}

<af:commandLink actionListener="# ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号