对新手有用的JavaScript开发小建议
来源:互联网 发布:淘宝评论炒作多久消失 编辑:程序博客网 时间:2024/05/03 16:25
这篇文章将向你分享一些不为人知的但很有用的JavaScript小建议,对那些刚涉及使用JavaScript编程语言的初级开发者应该有很大的帮助。
1. 用数组长度截取数组
我们都知道,对象都是通过使用JavaScript引用的,但这并不是唯一的准则,请看下面的检验案例:
var
arr1 = arr2 = [1, 2, 3];
//Change arr1
arr1 = [];
// 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
- 对新手有用的JavaScript开发小建议
- 对新手有用的JavaScript开发小建议
- 对新手有用的JavaScript开发小建议
- 对新手有用的JavaScript开发小建议
- 对新手有用的JavaScript开发小建议
- 对 Linux 新手非常有用的命令
- 对IOS新手开发有帮助的一些小代码
- 写给新手程序员的几个小建议!
- 三、对java新手的几个建议
- 对新手学习unity3D的建议1
- 【新手向け】对各位语音识别新手的建议
- php开发新手的一些建议
- 对Linux新手非常有用的 20个命令
- 对 Linux 新手非常有用的 20 个命令
- 对 Linux 新手非常有用的20个命令
- 对 Linux 新手非常有用的20个命令
- 对 Linux 新手非常有用的20个命令
- 对 Linux 新手非常有用的 20 个命令
- HTML5+CSS3<驴子跳游戏>网页游戏源码分享
- SQL UNION 和 UNION ALL 操作符
- [USACO 4.2.1] Drainage Ditches
- uva 112 Tree Summing
- Unity3D官方二维游戏开发教程中文版分享
- 对新手有用的JavaScript开发小建议
- 如何理解Hadoop-Hbase原理与应用小结
- 盗雪html5入门基础视频教程全集下载
- VC 调试之内存
- VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布
- 谷歌30个无厘头面试题
- 黑马程序员_java_面向对象_继承
- UVa:10308 Roads in the North
- 【Android】Fragment真正意义上的onResume和onPause