没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-02-23 17:19:54.000|阅读 698 次
概述:本文是Rick Strahl在使用JavaScript数组上的经验之谈,在一些细微的地方介绍了JavaScript在处理数组上,相对于其他开发语言的不同之处,有 些可能是我们自己想当然的事情,但实际上不是那么回事,呵呵。具体涉及到JavaScript数组初始化、length、扩展属性等。 【原文】Javascript Array Fun 【作者】Rick Strahl 【译文】http://cuimingda.com/2009/01/javascript-array-fun.html 【译者】明达 以下是对原文的翻译: Josh在我之前的一篇帖子中留下了一条评论,指出在CSS pr
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
本文是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),而且更难发现。所以要加倍注意类似的情况。
关于动态数组,下面介绍的这个情况也很有意思:
var ar = []
ar["test"] = 4;
ar[3] = 1;
var len = ar.length;
debugger;
让我们来猜一猜,此时此刻这个数组的大小应该是多少呢?
这段代码建立了一个数组,其中包含数值索引和字符串索引,而且这可以正常工作,无论你使用ar[3]还是ar["test"]都可以得到预期的结果。下面的截图展示了在Firebug中的调试结果:
请注意,数组的长度是4,而此时数组中包含4个数值索引的元素和一个字符串索引的元素。也就是说,字符串索引的元素是不计入数组长度的计算范围的。 而取而代之的,字符串索引器实际上作为数组对象的一个扩展属性而存在。Visual Studio JavaScript Debugger更加准确的证明了这点:
从这张截图可以看出,test已经成为array对象的一个属性,和length属性的性质是一模一样的。
本文没有提到什么新内容,但如果不了解JavaScript在处理数组上的细微差别,就会出现类似我之前所犯下的错误。上面提到的内容都是我在实际开发过程中曾经遇到过的问题,借这个机会记录下来,就当是给自己的备忘录了,如果恰好对你有帮助,将不胜荣幸。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:蓝色理想面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号