准确判断数据类型的三种⽅法
JavaScript中的数据类型判断⼀般都是使⽤的typeof操作符,但是这个操作符存在的问题就是他不能对Object和Array,这两种数据类型进⾏准确的判断,并且对于null由于历史遗留性的问题,他也会判断成为Object类型,所以在typeof操作符中只有6种数据类型了,但是实际上JavaScript中是有8种数据类型的。
所以这时候就需要能够准确的判断的数据类型的⽅法。
这样⼦的⽅法总共有三种分别是String.call()instanceof constructor。
函数String.call()⽅法是直接调⽤Object原型上的toString⽅法,并通过call来改变this的指向来返回⼀个像是[object Array][object Object]这样的字符串。
instanceof操作符是判断某个Function是不是在这个对象的原型(原型上⾯的constructor属性)上⾯,如果是的话就会返回ture,否则就会返
回false,因为查的是整个原型链上⾯的,所以,只要是这个对象的⽗类都会返回true。
instanceof运算符⽤于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
⾄于constructor该怎么判断,只是直接创建的话当然是可以创建的,但是如果是使⽤构造函数创建的话,那⼜要怎么判断啊,我不太懂。
还有⼀点要了解的,就是当存在有⽗⼦域以后,也就是在当前页⾯引⼊了其他的页⾯以后,那么对于引⼊页⾯的变量,通过instanceof是⽆法判断的(其实我很想知道是为什么),但是String.call就不会存在有这个问题。