您好,欢迎访问一九零五行业门户网

怎样判断一个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是个完美合适的操作。
var my_array = []; if (my_array instanceof array) { console.log('congrats, you have an array!'); }
4、对于javascript 1.8.5(ecmascript 5),变量名字.isarray( )可以实现这个目的
var my_array = []; if (array.isarray(my_array)) { console.log('congrats, you have an array!'); }
以上就是怎样判断一个javascript变量是array还是obiect答案代码详解的详细内容。
其它类似信息

推荐信息