数据类型检测的底层机制

@1 typeof用于检测基本数据类型,
        原理机制、采用的是计算机底层存储二进制检测,效率比较快。
        null在计算机存储二进制的过程中是64个零,而typeof判断的话前三位都为0的时候是object。
        typeof只能检测基本数据类型, 在检测Array Object null 返回值都是object。

@2 instanceof 用于检测对象类型,无法准确区分object array
        检测基本数据类型 返回的结果是 false
        1 instanceof Number // false 
        new Array(1) instanceof Number // true
        arr instanceof Array // true
        arr instanceof object // true 
        object instanceof  object // true
        object instanceof Array // false 
        
@3 constructor 用于构造函数原型的constructor指向构造函数本身来辨别的
        console.log([].constructor == Array)
        VM7631:1 true
        console.log({}.constructor == Object)
        VM7756:1 true
        console.log(1.constructor == Number)
         VM7756:1 false

@4 object.prototype.tostring.call(value)  内置构造函数的原型对象上基本上都有tostring这个方法
        只要把object.prototype.tostring执行,方法中的this是谁检测结果就是谁【object ?】           console.log(Object.prototype.toString.call('1'))
        VM8801:1 [object String]
        console.log(Object.prototype.toString.call(1))
        VM8932:1 [object Number]
        console.log(Object.prototype.toString.call([]))
        VM9063:1 [object Array]
        console.log(Object.prototype.toString.call({}))
        VM9082:1 [object Object]
        console.log(Object.prototype.toString.call(null))
        VM9237:1 [object Null] 

你可能感兴趣的:(javascript,开发语言,ecmascript)