zoukankan      html  css  js  c++  java
  • JS数据类型检测

    typeof 操作符

    只能用来检测基本类型的数值。引用类型会统一返回 object。

    • 函数:function
    • 数值:number
    • 字符串:string
    • 布尔值:boolean
    • undefined:undefined
    • 对象:object
    • 正则:function (safari < 5 || chrome < 7)

    缺点:

    1. 自定义构造函数会统一检测为 Object,无法具体判断构造函数的类型。

    instanceof 操作符

    只能用来检测引用类型,由于 js 规定所有引用类型的值都是 Object 构造函数的实例,所以用 instanceof 检测基本类型的值,始终会返回 false。
    检测引用类型可以判断出该实例所属的构造函数。

    缺点:

    1. ? 变量与构造函数必须在同一个作用域中 如果变量定义在其他的 frame 中,在主框架中是无法进行检测的。需要进一步的尝试,没测出来。

    toString

    Object.prototype.toString.call(value) 检测某个对象到底是原生对象还是开发人员自定义的对象

    在任何数据类型上调用 toString 方法,会返回 [object NativeConstructorName] 的字符串。每个类在内部都有一个[[Class]]属性,这个属性中就指定了上述字符串中的构造函数名。

    不能检测非原生构造函数的构造函数名。因此,开发人员定义的任何构造函数都将返回[object Object]

    function getType(data) {
        return Object.prototype.toString.call(data).slice(8, -1);
    }
    

    constructor

    判断实例的直接构造函数属性。适用于原生构造函数或者开发人员自定义的构造函数。

  • 相关阅读:
    vmareworkstation 15 安装密钥
    Linux进入ftp界面退出方法
    linux安装mysql(5.1.73)
    安装http服务,用http搭建web网
    telnet远程连接
    yum出现问题解决方法
    samba
    nfs搭建
    解决VMwareworkstation无法在windows上运行
    2 shell编程
  • 原文地址:https://www.cnblogs.com/shenggao/p/12381912.html
Copyright © 2011-2022 走看看