美文网首页
javascript判断数组和其他的基本类型值

javascript判断数组和其他的基本类型值

作者: holy俊辉 | 来源:发表于2018-08-31 10:29 被阅读12次

    所有typeof返回值为“object” 的对象(如数组)都包含一个内部属性([[Class]])(我们可以把它看做一个内部的分类,而非传统的面相对象意义上的类)这个属性无法直接访问,一般通过Object.prototype.toString(...)来查看例如:

    Object.prototype.toString.call([1,2,3]);
    //"[object Array]"
    Object.prototype.toString.call(/regex-literal/i);
    //"[object RegExp]"
    

    上例中数组的内部[[Class]]的属性值是“Array” 正则表达式的值是“RegExp” 多数情况下,对象的内部[[Class]] 属性和创建该对象的内建原生构造函数相对应,但并非如此
    那么基本类型呢,来看下null和undefined

    Object.prototype.toString.call(null);
    //"[object Null]"
    Object.prototype.toString.call(undefined)
    //"[object undefined]"
    

    虽然Null() 和undefined()这样的原生构造函数不存在,但是内部的[[Class]]属性值仍然是"Null"和“Undefined”
    其他的基本类型值(如字符串。数字和布尔)的情况有所不同,通常称为包装

    Object.prototype.toString.call('abc');
    //"[object String]"
    object.prototype.toString.call(42);
    //"[object Number]"
    object.prototype.toString.call(true);
    //"[object Boolean]"
    

    上面的基本类型值被各自的封装对象自动包装,所以他们的内部[[Class]]属性值分别为“String”."Number""Boolean"

    相关文章

      网友评论

          本文标题:javascript判断数组和其他的基本类型值

          本文链接:https://www.haomeiwen.com/subject/mnqswftx.html