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

对新手有用的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

360搜索发布新产品“我的搜索” 引入网民评价和网站名片功能 AppScale:Google App Engine的开源实现 近期十大优秀jQuery插件推荐 通过语音识别来编程 速度远超键盘 BrowserStack:多系统跨浏览器兼容性测试工具API发布 更加开放?Path向13家应用开发商开放API 重金力邀开发者 联想智能桌面应用开发大赛开幕 SDCC 2013大会讲师名单议题出炉 8月20日五折票价最后一天 程序员困境:底层编码能力正逐步丧失 寓教于乐 给代码审查者的几点建议 裁员4千、总裁员人数超过7.5万,难掩思科锋芒 物联网离普罗大众还有多远? 悼念斯诺登使用的加密电邮服务——Lavabit架构解析 运营商上阵OTT “一笑泯恩仇”后路在何方 [企业开源系列]后起之秀Facebook凭什么挑战互联网霸主Google? 谷歌推出免费标签管理应用Tag Manager McAfee CTO Phyllis Schneck被任命为NPPD副部长 Bootstrap 3.0发布 更好地支持移动端和响应式开发 国内创业公司QingCloud的魄力:做一个世界级的IaaS服务 从毫秒到微妙,纯硬的闪存阵列IBM Flash System来了! 中科创达邹鹏程:黑客精神逐渐被人遗忘 有点让人感伤 通过讲故事的方式来设计优秀网站 “肮脏的”IT工作排行榜 Clank:带有SCSS的高效率移动应用原型框架 欧朋 CTO 罗志宇:谈Sphinx游戏引擎的前世今生 John Carmack大神亲手操刀,Oculus Rift SDK即将发布 从南极之争谈软件架构十个技巧,及成功团队具备的气质 Imation重拳出击,推出新型混合存储平台 张建华:FusionSphere不是简单的OpenStack发行版 Chrome 29来了:地址栏变得更“兼容” Android版增WebRTC 工程师谈在Facebook工作最糟糕的事情 加了个硬盘,整个系统全乱了,怎么办? delphi 6手册组,我翻译好的文件无法上传,谁知道该怎么办? 我不想用第三方控件,如果我想使把Panel中的内容达到一个清屏效果(便如由上向下刷新,但最前有一些粉碎状效果,或是百叶窗什么的。) 有关异常的问题 如何用最简单的方法控制在数据窗口最后一列按回车键增加一行? 哪有ASP的技术手册呀?有关组件用法的 那位能有一个使用xpoint的应用?我不知道应该怎么用xpoint,有什么好??? 为什么我建立了两个读写线程,当频繁读写硬盘后,无法刷新界面呢? 再请教:如何得到浏览器的窗口的尺寸? 高分求助!!!怎样用VC在98下建立一拨号连接? 曾经的话题想改变命运的请走进来不想再说多少有自已看懂了的曾经在这里发过言的朋友可以和我联系,QQ12545029,scaer123@163.net socket编程,如何使connect()30秒超时???? 请问国内有OpenGL的比较全面的代码下载站点吗?能否提供几个URL?谢谢! 关于操作符重载的问题 有什么办法隐藏一个文件夹,使别人清除隐藏属性也看不到。 com的奇怪问题,27分 新手三层结构。问题多多。。。 jsp怎样连数据库? 高分讨教:这个vb+SQL2000的出错提示太奇怪了. 有在深圳考程序员的吗? 大家觉得电信好还是联通好啊 为什么在Win2000下我的GeForce GTS的显卡用了最新的公版驱动,在Windows优化大师中测试 一个小问题,如何在Access97数据库中创建和使用临时表??? 请问一个问题:有一个字符串,我想去掉左边固定的几个字符,剩下右边未知的几个字符!怎么做?谢谢~~ 菜鸟提问,网页上的自动变化的图片用什么作的呀? 请问哪有免费的web mail系统下载? 如何新建一个数据链接? 我想给自己的控件加一个ImageList和ImageIndex属性,选中ImageList后,在ImageIndex中显示图像列表。应如何做? 曾经的话题想改变命运的请走进来不想再说多少有自已看懂,了的曾经在这里发过言的朋友可以和我联系,QQ12545029,scaer123@163.net 如何在ASP中实现广告的按比率播放? dbedit 的问题,???????? private 里声明的函数居然调用不了? 如何得到字体的宽度和高度? ???????如果你说你对DELPHI懂,请进 SAMPLE QUESTION 在DELPHI中如何使用其他语言开发的主见? 请问LINK : warning LNK4098: defaultlib "mfcn42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library是什么含义? 请问,如何删除一个单项链表的头节点?? 怎样成为编程高手!请教高手们!! b/s程序在客户端生成EXCEL报表问题,梦天请进? 求解:如何将一幅图片或文件存入数据库??? 在用UpdateBatch方法保存纪录时VB提示:数据提供程序或其他服务返回E_FAIL状态。错误号:80004005,我死活也调不出来,还望各位高手指点一二。 菜鸟求教:要怎样去买一款满意的笔记本电脑?(29分) 我新生成一个继承自TPanel的类,但我想有其Create时,在其上放置一个TImage,请问: 急!新手请教:想查一个字符串是否存在于另一字符串中,如"asd" 不在"abca sd"中,该是哪个函数 为何网能上Ftp软件和SQL Server和Foxmail用不了? 急!!!谁有RTF文件格式中元素说明?给一份!谢先!!!!70分奉上! 请问VC中如何配置ADO(详细些)???????????????????? 关于一个DW的求和问题 问win32汇编大师(vBin等)一个非常难的问题,请看下面的源码: 请帮我看一看这个问题(关于死锁),顺便送分。 欢迎讨论jsp与ASP.NET技术 148开方等于几倍根号几?突然忘了、、、麻烦了! 在括号里填上适当的数,然后列成综合算式. 长方体、正方体各部分名称 三分之根号三 的开方等于多少啊 (1)用S表示圆的面积,r表示半径,圆面积的计算公式就是( )(2)一个圆的半径是10dm,这个圆的直径是( )dm,周长是( )dm,面积是( )平方分米(3)如果一个圆的半径扩大3倍,那么它的周 长方体和正方体有什么关系 两个圆的周长比是四比五这两个圆的面积比是多少?急 圆的面积公式中S=派R2,S于R成正比例关系还是反比例关系? 小学长方体和正方体的体积问题!把一个长是6分米得长方体,沿着宽切成两个小长方体后,表面积增加了20平方分米原来长方体的体积是多少? 两个圆的周长比是4:5,这个圆的面积比是( : 我马上就要交试卷了! 圆的面积为什么=派r的2次方 有两个圆,第一个圆的半径是4厘米,第二个圆的周长与第一个圆的周长的比是4:5.第二个圆的面积是多平方厘米 圆的面积2πr这是什么公式?但怎么我的工程力学上的圆的面积公式是这个:(πd^2)/4为什么捏 高数证明半径为r的圆的面积为s=派r平方 十六进制1000转换成十进制数是多少?请写明计算步骤~ 在圆的面积公式里r等于什么 若m+m分之1等于根号5,则正数m-m分之1的平方根是多少 十六进制1000转换成十进制数是?解题思路 八进制和十六进制的数怎么求,如(101)8 和(101)16 数电求大神.一位十进制、二位三进制 、 已知圆的面积求圆的周长要举几个简单易懂的例子我只是个小学生 ,并且要说出怎样的步骤求出面积除以π以后的数求半径 计算机的十六进制1000转化成十进制数是多少啊?怎么计算啊 若根号m=7,则m=_,m的平方根是_. 小巧的妈妈是1980年2月29日出生的,到2013年过了几个生日? 列式计算: X的24%比2多2.8,求X   (综合算式) 若-根号2是m的一个平方根,则m+7的取值范围是多少? 小明1996年2月12日出生,到2013年2月12日他多少个周岁?这时他一共过了多少个生日? 8个x比5个x多48怎么列算式 最好是第一单元的, (-8)*16/3*(-1)*2/1要列算式 要像(5:x=8:2)怎样列的式子 若负的根号2是m的一个平方根,则m+7的平方根是? -0.25/(-8/3)列算式 一辆客车从甲地到乙地,第一天行了全程的1/5,第二天行了450km,这时已行路程和剩下路程的比是3:7.甲、乙两地相距多少千米? 金钥匙小学四年级下册数学试卷 爷爷是1932年2月29日出生的到今年过了多少个生日 百分数奥数题 快 SOS 求人教版的四年级下册数学试卷是期末考试的 C++问题:定义一个圆类,计算圆的面积和周长 要求:分别用成员函数 友元函数来计算圆的周长和面积分别用成员函数 友元函数来计算圆的周长和面积 求小学六年级数学题~~~~~`拜托 急用 小学四年级下册数学试卷 (人教版)第三单元测试 爷爷是母年的2月29日出生的今年66岁爷爷一共过了多少个生日? 十进制数 378 转换成十六进制数的是? 我想知道过程是怎么做的?谢啦 53页 圆的面积y与圆的周长x的函数之间的关系怎么表示 计算2004÷(2004+2004/2005)=( )请妖精momo1987把过程写详细一点,如果好我就会采纳! 圆的面积公式S=πr²,S与r之间的关系是 爷爷是某年的2月29日出生到2012年时64岁到2012年时爷爷一共过了多少个生日? 把1,2,5,6,7,8,9,10,13,分别填在括号里(每个数字只能用一次),使三个算式都正确( ) + ( )= ( ) + ( ) = ( ) * ( ) = 圆中R,r,d,s,c,还有圆的面积公式和周长公式?还有半圆的面积公式和周长公式 应用题 爷爷是1936年2月29日出生,到2005年他一共过了几个生日 1.b²×b的m次方+b的³×b的m+1次方=?2.x的4次方·x的³+7x的六次方·x-2x的五次方·x²=?3.x的3n+1次方·x+3x的n+1次方·x的2n+1次方=? 若m为根号2的小数部分,则m方加m加根号2等于多少? 爷爷是2月29日出生的,满60岁时,他过了几个生日?要算式,谢谢! 某一项工作,甲单独做20天可完成,乙单独做30天可完成,现在两人合作,中间甲休息了3天,乙休息了若干天,终于用16天完成.那么乙休息了多少天? 八进制数26553转化为十六进制数是多少?要求有过程 根号48开方等于几 某种笔记薄大号本1元买3本,中号本1元买4本,小号本1元买5本.如果用6元买得笔记薄25本,问大,中,小号各几本? 已知8个一样的正方体,它们的棱长总和是288厘米,把这8个正方体拼成一个长方体,已知8个一样的正方体,它们的棱长总和是288厘米,把这8个正方体拼成一个长方体,这个长方体的表面积是多少?体
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn