首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页制作Javascript/Ajax

使用JavaScript数组上的经验之谈

来源: 互联网    日期:2009-2-24
 
网页制作Webjx文章简介:本文是Rick Strahl在使用JavaScript数组上的经验之谈,在一些细微的地方介绍了JavaScript在处理数组上,相对于其他开发语言的不同之处,有些可能是我们自己想当然的事情,但实际上不是那么回事,呵呵。具体涉及到JavaScript数组初始化、length、扩展属性等。

本文是Rick Strahl在使用JavaScript数组上的经验之谈,在一些细微的地方介绍了JavaScript在处理数组上,相对于其他开发语言的不同之处,有些可能是我们自己想当然的事情,但实际上不是那么回事,呵呵。具体涉及到JavaScript数组初始化、length、扩展属性等。

【原文】Javascript Array Fun
【作者】Rick Strahl
【译文】http://cuimingda.com/2009/01/javascript-array-fun.html
【译者】明达

以下是对原文的翻译

Josh在我之前的一篇帖子中留下了一条评论,指出在CSS property watcher component中存在一些小错误,这是一个jQuery插件,将CSS属性保存在数组中,并且跟踪这些值的变化,当发现CSS属性值发生变化时,会抛出一个事件,用户可以在事件中做出相应的处理。

我的错误出在如何定义数组上:

var data = {
  props: props.split(","),
  func: func,
  vals: [props.split(",").length],
  itvlId: itId
};

这段代码是要建立一个特定长度的数组,但显然结果和我预想的不大一样。实际上这个数组只包含一个元素,就是length的值,而要实现初始化数组的目标,正确的做法应该是下面这个样子:

vals: new Array(props.split(",").length)

可为什么我以前定义的方法错了,那个插件却能正常运行呢?因为JavaScript可以根据赋值动态的建立数组,而不需要预先进行初始化,所以就算定义方法错了,也能正常运行。

$.each(data.props, function(i) { data.vals[i] = el.css(data.props[i]); });

这段代码遍历了props数组,并且通过对vals数组对应索引赋值,动态的建立了一个新数组。

JavaScript的数组可以根据所赋的值自动调整大小,比如下面这个例子:

var ar = []
ar[2] = 1;
debugger;

下面的结果是Firebug调试界面的截图,可以看到数组中有三个元素。


点击放大

这个数组的长度是3,就像一个经过初始化的数组一样。所有没有赋值的数组对象,都将被定义为undefined。

JavaScript可以自动重新调整数组的大小,这真是太棒了,但也许预先设置一个固定的大小,可以避免数组内部频繁的调整大小。对已有的元素进行赋值,肯定要比每次赋值前重新调整大小要快的多。

这种自动调整大小的机制,更容易出现越界数组(out of bounds array),而且更难发现。所以要加倍注意类似的情况。



文章共2页:  [1] [2]


更多的使用JavaScript数组上的经验之谈请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2009-2-24   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报