Javascript中判断变量是数组还是对象(array还是object)
更新时间:2013年08月14日 14:55:01 作者:
怎样判断一个JavaScript变量是array还是obiect,或许有很多初学者对此不是很清楚吧,下面为大家详细解答下,希望对大家有所帮助
怎样判断一个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!');
}
答案:
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!');
}
相关文章
js的window.showModalDialog及window.open用法实例分析
这篇文章主要介绍了js的window.showModalDialog及window.open用法,实例分析了window.showModalDialog与window.open方法的定义、功能与使用技巧,需要的朋友可以参考下2015-01-01JavaScript声明变量的这四兄弟(var、let、function、const)
这篇文章主要介绍了JavaScript声明变量的这四兄弟,主要就是介绍var、let、function、const区别,需要的朋友可以参考下2023-02-02JavaScript或jQuery 获取option value值方法解析
这篇文章主要介绍了JavaScript或jQuery 获取option value值方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-05-05微信小程序实现滑动/点击切换Tab及scroll-left的使用
这篇文章主要介绍了微信小程序实现滑动/点击切换Tab,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-04-04
最新评论