1.创建数组的基本方式:
第一种:
var colors = new Array();
如:
var colors = new Array(20); //预先知道 数组要保存的项目数量var colors = new Array(“red”,“blue”); //直接向阵列构造函数传递参数
当然,也可以省略新操作符,如:
var colors = Array(20); //预先知道 数组要保存的项目数量var colors = Array(“red”,“blue”); //直接向阵列构造函数传递参数
第二种:
使用字面量表示法,字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如
var colors = [“red”,“blue”]; //创意建一个包含两个字符串的数组 var names = []; //创建一个空数组
2.如何确定某个对象是不是数组?
1.使用的的instanceof操作符
<SCRIPT> var a = new Array(); var b =“j”; / *使用instanceof用* / 函数myfunction(kt){ 如果(kt instanceof Array){ 的console.log(“是一个数组! }其他{ 的console.log(“不是一个数组!”); } } MyFunction的(一); MyFunction的的(b)中中; </ SCRIPT>
输出如下图:
的instanceof操作符的问题在于,它假定只有一个全局执行环境,如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的阵列构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组在第二个框架中原生创建的数组分别具有各自不同的构造函数。那么判断一个对象是否为数组,就会用当前的Aarry构造函数做比较,就会把另一个框架中原本是数组的对象与当前框架的数组构造函数对比,那当然就会告诉你不是数组了。
2.Array.isArray()
为了解决这个问题,ECMAScript5新增了Array.isArray()这个方法这个方法的目的最终确定某个值到底是不是数组,而不管它是在哪个全局执行环境中创建的使用方法如下。:
/ *使用Array.isArray()* / 函数myfunction2(kt){ if(Array.isArray(kt)){ 的console.log( “是一个数组!”); } else { 的console.log( “不是一个数组!”); } }
3.typeof
使用typeof判断数据类型,只能区分基本数据类型,如:string,number,boolean,object,undefined,而对于null,array,object使用typeof都统一返回对象
4.tostring(对象原生的的toString方法)
完整代码
<!DOCTYPE html> <HTML> <HEAD> <meta charset =“UTF-8”> <TITLE> </ TITLE> <SCRIPT> var a = new Array(); var b =“j”; / *使的instanceof用* / 函数myfunction(kt){ 如果(kt instanceof Array){ 的console.log( “是一个数组!”); } else { 的console.log( “不是一个数组!”); } } MyFunction的(一); MyFunction的(b)中; / *使用Array.isArray()* / 函数myfunction2(kt){ if(Array.isArray(kt)){ 的console.log( “是一个数组!”); } else { 的console.log( “不是一个数组!”); } } myfunction2(一); myfunction2(b)中; / *使用的toString * / function myfunction3(value){ console.log(+ Object.prototype.toString.call(value)==“[object Array]”); } myfunction3(一); myfunction3(b)中; / *使用typeof运算* / var n = null; console.log(typeof a); console.log(typeof n); console.log(typeof b); </ SCRIPT> </ HEAD> <BODY> </ BODY> </ HTML>
如下图: