说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

对新手有用的JavaScript开发小建议

HTML文档下载 WORD文档下载 PDF文档下载
针对JavaScript编程技术里面的技巧问题,笔者总结了几点规律,包括用数组长度截断数组、用push来合并数组、特征检测、检查某一个对象是不是数组等方法来进行编程。希望对各位初学JavaScript编程的开发者有帮助。

这篇文章将向你分享一些不为人知的但很有用的JavaScript小建议,对那些刚涉及使用JavaScript编程语言的初级开发者应该有很大的帮助。

1. 用数组长度截取数组

我们都知道,对象都是通过使用JavaScript引用的,但这并不是唯一的准则,请看下面的检验案例:

var arr1 = arr2 = [1, 2, 3]; //Change arr1arr1 = [];// arr2 will still be [1,2,3]

最初,arr1和arr2都指向了数组[1,2,3],之后当arr1重新指向[ ]的时候,arr2的引用并没有发生什么变化,仍然指向[1,2,3]。但是如果我们想让arr1和arr2都指向[ ]的话,那应该怎么做呢?我们可以利用数组的长度属性。当设置arr1.length=0的时候,arr1里面的要素将被清空。而引用是不会改变的,所以arr1和arr2指向[ ]。

2. 用push来合并数组

我们通常使用concat()来合并两个数组,例如:

var arr1=[1,2,3];var arr2=[4,5,6];var arr3=arr1.concat(arr2);arr3;[1, 2, 3, 4, 5, 6]

我们同样可以利用push()来达到这种效果:

var arr1=[1,2,3];var arr2=[4,5,6];Array.prototype.push.apply(arr1,arr2);arr1[1, 2, 3, 4, 5, 6]

应用这种方法可以把一个数组作为第二个参数,因此,arr2能够被推送到arr1里面。

3. 特征检测

在我们使用的很多API里,我们能看到一些特征检测语句,这些语句是用来检查浏览器是否支持特定的属性或方法,以便能够支持跨浏览器兼容性。可以这样做:

if(window.opera){    console.log("OPERA");}else{    console.log("NOT OPERA");}

这样的运作方式是正确的,但它的缺点是效率不高。这种类型的对象检测将在浏览器里初始化资源。更有效地方式是检查密钥是否在某一个对象里。

if("opera" in window){    console.log("OPERA");}else{    console.log("NOT OPERA");}

4. 检查某一个对象是不是数组

在JavaScript编程语言里,我们可以使用typeof来检查变量的类型,typeof可以返回数字、布尔值、字符串、对象、函数和未定义的对象。事实上这里没有数组,typeof数组就是一个对象。所以我们怎么来决定一个对象就是一个数组呢?在ECMAScript 5编程语言里,我们可以使用 Array.isArray(obj)来检查这里所提到的问题。但是目前ECMAScript 5还没有得到广泛使用。

不过,我们可以使用下面的方法:

var obj=[];Object.prototype.toString.call(obj)=="[object Array]";true

原文:Pixels Tech

如何让Ruby项目速度提升10倍 跨平台进行到底:Facebook发布Unity SDK 云薪资管理初创公司ZenPayroll:年处理薪资超1亿美元,获多位知名CEO力挺 Twitter开源Summingbird:近原生编码下整合批处理与流处理 亚马逊推Matchbook 欲将顽固纸质书读者拉向电子书 Broadcom为可穿戴设备推新开发平台WICED 再战江湖 New Kodak还牛不牛? 郭理靖:公、私有云架构异同点与难点 美化代码的15个代码语法高亮工具 你所不知道的虚拟化和云计算 [开源推荐]Effeckt.css项目:CSS交互动画应用集锦 针对Google Glass应用的四大UX设计原则及典型应用 Google收了摩托罗拉,微软收了诺记,黑莓又将花落谁家? 十亿月PV网站秘诀:Reddit自失败中总结的25条经验 粉碎5个NoSQL流言:各司其职,NoSQL的出现比关系型更早 豌豆荚发力移动游戏平台,推出SDK 2.0 BlackBerry Jam Asia 2013即将在香港隆重召开,免费门票限量提供 小米发布会高潮迭起:米3、电视、Hugo大牛 谷歌放在Windows上的特洛伊木马:Chrome Apps应用平台 解析:Google基于数据驱动的招聘面试程序 决战“缓存”之巅:微软 vs. 亚马逊 雪中送炭:十大前沿移动应用开发工具 高通智能手表Toq都用到了哪些技术? 研发周报:修改一行SQL代码 性能提升了100倍 2013年NoSQL就业趋势分析 鲜为人知的静态、命令式编程语言——Nimrod 高性能Web应用打造攻略:扩展过程中20个最大的绊脚石 开源项目Marathon:让你的数据中心像谷歌一样运行 精益化运营:10款移动统计分析工具推荐 移动建站工具(一):分秒钟将Web网站移动化 移动周报:小米的“倚天屠龙记” 各位programer加班有加班工资吗? 代理服务器的原理?——有谁知道! 请问怎么在一个对话框程序的文本框中绘图 请问windows网络程序PING编程技术里的几个问题,ICMP回显里面的timestamp是怎么纪录进去的 什么地方可以Down rose?或谁寄给我一个? 编写一个函数,通过指针连接两个字符串!!!!!!!!!!!! 用applet怎样打开一个文件吗? 请问哪种ORB产品实现了com服务器/corba客户机的桥 我读《深入探索C++对象模型》的感受,cber能再回答我一次么? 谁有DELPHI的有关网络编程方面的资料?给我一份可以吗? 关于stringgrid的问题????? 痛苦啊,难道要放弃BCB吗? 大家认为在开发过程中是否不能用全局变量? 如何让LINUX支持我显卡 高手,谁来帮我一下~! 取字符 在SDK中,如何获得客户区的宽度和高度呢??(哪两个函数呢?) 哪里有ATL的电子书下载?最好是中文的! 高手谁能帮帮我呀~~~~~~~! 请教:如何在statusbar的panel中显示一个图标呢? VC++中如何使用OLE对象? 初来乍到,发现这儿JJMM还挺多的。。。 请高人指教~! CSDN中碰到这种问题,该如何解决呢? 如何学习director 你能帮我一下吗?~ 企业商务管理软件,开放全部的源代码及开发文档! 企业管理软件,全套源码及开发文档!!!! 哪里有支持任何波特率的通讯控件下载? net_lover(孟子E章)请进~! 一个有关CWebBrowser的问题,急急急!!! 这样的语句为什么不可以实现一次删除多条记录 plmm是什么意思? 各位大侠,知道哪儿有直接可用的上传文件的控件吗? 多谢了!!! 论坛的题目是不是太没意思了 一个sqlserver7统计的问题?? varchar类型不是可以输入255个字符吗,为什么我输了160个就出现'item XXX doesn't pass validation test ' 唉 ~~~~~ 奈何 ~~~~~ 突然想到个荒唐的问题: 事件和过程有什么不同? 奇怪的事前,高手请进来 我的问题还没有解决~! 这里的高手呢,人听多,会的人不多 申奥倒计时,如果你在线,请进来验证这以历史性时刻,谢谢 我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试? 请教,怎样在java中把Button的背景改做一个图片 对delphi5一个自带例题的疑问。 爆炒MM之水园MM ID一览 窗体和控件的自适应问题? 求《unix》环境高级编程的源程序下载。 在MIS或WEB中有大量的对数据操作的工作,是否所有的insert,update,delete工作都需lock and unlock??? 紧急求助:那里有pb7的最新版本下载(mark200106@sina.com) 初二上册数学直角三角形全等的判定,同步练习那一题.已知:如图,在三角形ABC和△A'B'C'中,角ACB=角A'C'B'=90°.,CD,C'D'分别是△ABC和△A'B'C'的中线,且CD=C'D';CE,C'E'分别是△ABC和△A'B'C'的高线,且CE=C'E' 8.4÷﹙2.1×5﹚简便计算 递等式 5乘777加13乘555怎么巧算、、麻烦帮我一步一步写出来. 如图 在三角形abc中,角acb=90°且de是三角形abc的中位线,延长ed到f,使df=ed,连接fc,fb,回答下列问题1..求证:四边形BECF使菱形2.当角A的大小满足什么条件是,菱形BECF使正方形?请回答并证明你的结论 (-510)/(+34)/(-0.125)简便运算大师帮忙~ 计算(-1)+(-3)+(-5)+(7)+…… +(-99) cos(arc sin x/a)等于什么还有反三角函数公式里的一些类似的! 人教版五年级上册数学指导第9页跳一跳0.34×12.5+0.125×66 如何计算1+3+5+7+.+99=?里面有多少项?如何计算呢?===多少? 若a=arc sin(sin3分子4π),则a的值 用梯等式求50*96+57*4+7*66 怎样求证对于任意的角A cosA四次方-sinA的四次方=cos2A (arc sin x)/(x)的极限是?x趋于0 57乘66分之23如何简便运算? 已知cos2a=3/5,求sina的四次方+cosa的四次方 计算:sin[arc*sin(3/5)+arc*sin(7/18)] 数学题怎么算 /80 = 66 怎么计算 cosa四次方—sina四次方 为什么 等于cos2a arc sin (25/99)等于多少度啊?谁手边有计算器帮忙按一下下呗 谁给我出题,80道数学题,(简算)和(方程) sin^4a+cos^4a=1,则sina-cosa= arc sin(-1/2)=? 给80分 用算除法小风 小玉 小明是幼儿园里最好的朋友 小风体重14KG 正好是小明体重的8分之7 而小明比小玉的重15分之1,小玉体重应该是多少千克 修一条路,第一天修了8分之3,第2天修了第一天 求证:(1-cosa的4次方-sina的4次方)/(1-cosa的6次方-sina的6次方)=2/311 sin ( arc sin л/6 ) =多少?还有一道:arcsin(cos 7л/6) = 1+1.2+1.4+1.6+.+9.6+9.8+10怎简便算法 用cosa 表示sin4a-sin2a+cos2a ARC sin 0.91ARC( sin 0.91) 是多少的角度啊 用简便算法计算:48×110-4×48-8×48+2×48 sin4a-cos4a=sin2a-cos2a 求证 5分1比1和3比15可以组成比例对吗 (12.5+0.125)×8-81的简便算法 (sin2a-cos2a)^2=1-sin4a 求证! 0.47*2.5*0.4怎样简便运算 1.6*7.5*1.25.请用简算法. (sin2a-cos2a)^2=1-sin4a请尽快给我答案!急!急!急! 0.47*5.9+5.2*4.7-4.7*0.1怎么样简便计算? 6.25*2.7+6.5*1.25的简便算法 证明题:(sin2a-cos2a)²=1-sin4a 63+0.63*2.5+0.63*6.5怎样简便计算, 3.14*1.375+0.314*6.25-3.14*0.2 的简便算法 sin4a+sin2a*cos2a+cos2a=? 求过程,谢谢!sin4a数字是次方 简便计算185/25-4.5/2.5 1.25*7.1+1/8*2.6+0.375的简便算法 求所有的实数a,使得cosA,cos2A,cos4A,…,cos2^nA都是负数.n∈N,实数a就是角A。 5.2×4.8+4.8×4.8简便计算算出来讲原因 1.25*1.6*1.5简便算法 sin a +cos a =1/2 0 2.5×2.4÷1.4+4.8÷2.1×2.5的简便运算 1+2-3-4+5+6-8+9···+1997+1998-1999数一个没错,让你计算, cos(a+b)=3/5 sin(b-pai/4)=5/13 a,b 属于(0,pai/2) 求cos(a+pai/4) 如图,在三角形ABC全等于三角形A’B’C’,角∠ACB等于90°,∠A等于25°,点B在A’B’上,D是BB’的中点,连接CD,求∠ACA’的度数 简便运算:4/11*(2/5-1/4) 333*333怎样用简便方法计算? 如图 在rt三角形abc中 角acb等于90度 a=5 c=13 求b若斜边AB上的高为CD 求CD 简便运算:40.5÷1/4*[(1-1/4)*1.2] 333乘以333用简便方法怎么算 如图,在三角形ABC中,角ACB=90°,角A=60°,CD,CE分别是边AB上的中线和高.求证角ACE=∠ECD=∠DCB 简便计算4.5*9*1.2=? 777+777-777x777÷777=?用递等式怎么计算
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn