手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >Javascript中判断变量是数组还是对象(array还是object)
Javascript中判断变量是数组还是对象(array还是object)
摘要:怎样判断一个JavaScript变量是array还是obiect?答案:1、如果你只是用typeof来检查该变量,不论是array还是obj...

怎样判断一个JavaScript变量是array还是obiect?

答案:

1、如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。

此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。

然而,参数对象【arguments object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array。

此外,当一个对象有a.length属性的时候,这个方法也不成立。

复制代码 代码如下:

// Real array 正在的数组

var my_array = [];

// Imposter! 冒名顶替的!

var my_object = {};

my_object.length = 0;

// Potentially faulty 潜在的错误

function is_this_an_array(param) {

if (typeof param === 'object' && !isNaN(param.length)) {

console.log('Congrats, you have an array!');

}

else {

console.log('Bummer, not an array');

}

}

// Works 成功

is_this_an_array(my_array);

// Works, but is incorrect 成功了,但是不正确

is_this_an_array(my_object);

2、回答这个问题的另一个答案是用一个更加隐蔽的方法,调用toString( )方法试着将该变量转化为代表其类型的string。

该方法对于真正的array可行;参数对象转化为string时返回[object Arguments]会转化失败;此外,

对于含有数字长度属性的object类也会转化失败。

复制代码 代码如下:

// Real array 真正的数组

var my_array = [];

// Imposter! 冒名顶替的!

var my_object = {};

my_object.length = 0;

// Rock solid 坚如磐石(检验函数)

function is_this_an_array(param) {

if (Object.prototype.toString.call(param) === '[object Array]') {

console.log('Congrats, you have an array!');

}

else {

console.log('Bummer, not an array');

}

}

// Works 成功了

is_this_an_array(my_array);

// Not an array, yay! 不是数组(array)!

is_this_an_array(my_object);

3、此外,在可能不可靠的多框架DOM环境中,instanceof是个完美合适的操作。

扩展阅读:"Instanceof Considered Harmful…"

http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray

复制代码 代码如下:

var my_array = [];

if (my_array instanceof Array) {

console.log('Congrats, you have an array!');

}

4、对于Javascript 1.8.5(ECMAScript 5),变量名字.isArray( )可以实现这个目的

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray

复制代码 代码如下:

var my_array = [];

if (Array.isArray(my_array)) {

console.log('Congrats, you have an array!');

}

【Javascript中判断变量是数组还是对象(array还是object)】相关文章:

简介JavaScript中toUpperCase()方法的使用

JavaScript中用于生成随机数的Math.random()方法

javascript中动态函数用法

详解JavaScript中setSeconds()方法的使用

JavaScript操作XML文件之XML读取方法

浅析Javascript匿名函数与自执行函数

JavaScript中用sort()方法对数组元素进行排序的操作

JavaScript获得url查询参数的方法

详解Javascript中的Object对象

JavaScript中的sub()方法的使用介绍

精品推荐
分类导航