• Javascript中判断变量是数组还是对象(array还是object)


    怎样判断一个JavaScript变量是array还是obiect? 
    答案: 
    1、如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。 
    此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。 
    然而,参数对象【arguments object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array。 
    此外,当一个对象有a.length属性的时候,这个方法也不成立。 

    代码如下:
     1 // Real array 正在的数组 
     2 var my_array = []; 
     3 // Imposter! 冒名顶替的! 
     4 var my_object = {}; 
     5 my_object.length = 0; 
     6 // Potentially faulty 潜在的错误 
     7 function is_this_an_array(param) { 
     8 if (typeof param === 'object' && !isNaN(param.length)) { 
     9 console.log('Congrats, you have an array!'); 
    10 } 
    11 else { 
    12 console.log('Bummer, not an array'); 
    13 } 
    14 } 
    15 // Works 成功 
    16 is_this_an_array(my_array); 
    17 // Works, but is incorrect 成功了,但是不正确 
    18 is_this_an_array(my_object); 

    2、回答这个问题的另一个答案是用一个更加隐蔽的方法,调用toString( )方法试着将该变量转化为代表其类型的string。 
    该方法对于真正的array可行;参数对象转化为string时返回[object Arguments]会转化失败;此外, 
    对于含有数字长度属性的object类也会转化失败。 

    代码如下:
     1 // Real array 真正的数组 
     2 var my_array = []; 
     3 // Imposter! 冒名顶替的! 
     4 var my_object = {}; 
     5 my_object.length = 0; 
     6 // Rock solid 坚如磐石(检验函数) 
     7 function is_this_an_array(param) { 
     8 if (Object.prototype.toString.call(param) === '[object Array]') { 
     9 console.log('Congrats, you have an array!'); 
    10 } 
    11 else { 
    12 console.log('Bummer, not an array'); 
    13 } 
    14 } 
    15 // Works 成功了 
    16 is_this_an_array(my_array); 
    17 // Not an array, yay! 不是数组(array)! 
    18 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 

    1 var my_array = []; 
    2 if (my_array instanceof Array) { 
    3 console.log('Congrats, you have an array!'); 
    4 } 

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

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

    代码如下:

    1 var my_array = []; 
    2 if (Array.isArray(my_array)) { 
    3 console.log('Congrats, you have an array!'); 
    4 } 
  • 相关阅读:
    软件项目管理阅读笔记02
    大二下周总结(11)
    “帮你APP”团队冲刺9
    “帮你APP”团队冲刺8
    “帮你APP”团队冲刺7
    “帮你APP”团队冲刺6
    “帮你APP”团队冲刺5
    单词统计
    “帮你APP”团队冲刺4
    “帮你APP”团队冲刺3
  • 原文地址:https://www.cnblogs.com/yanglang/p/8652933.html
Copyright © 2020-2023  润新知