一 JS中如何判断数据类型?

    JavaScript中判断数据类型有多种方法,以下是一些常见的方法及其特点:

    typeof:

    • 这是最基本的数据类型判断方法,使用typeof运算符可以判断除了null和数组之外的基本类型。例如,typeof "hello"会返回"string"。
    • 对于对象,包括数组和null,它都会返回"object",因此这不是区分数组和普通对象或识别null的最佳方法。

    instanceof:

    • 用于判断一个对象是否属于某个构造函数的实例或是其子类的实例。例如,arr instanceof Array会检查arr是否为Array的实例,返回true或false。
    • 对于检测对象的具体构造函数非常有用,但对于基本类型无能为力,且在不同的全局执行环境中(如iframe),可能会有不同的构造函数,导致误判。

    Object.prototype.toString.call():

    • 这是判断数据类型最准确的方法之一,它可以区分出所有内置类型,包括数组Array、null等。例如,Object.prototype.toString.call([])会返回"[object Array]"。
    • 通过比较返回的字符串,可以精确地判断出数据类型,是最佳的通用型判断方法。

    constructor属性:

    • 每个对象都有一个constructor属性,指向创建该对象的构造函数。例如,arr.constructor === Array可以判断一个对象是否由Array构造函数创建。
    • 但要注意,constructor是可以被修改的,因此不是100%可靠。