如何精准的判断数据类型呢?
使用 Object.prototype.toString.call 方法
typeof 和 instanceof 的弊端
typeof 可以判断除了 null 以外的基本数据类型,但是判断引用类型时,除了 function 类型,其他的无法准确判断。 instanceof 可以准确地判断各种引用数据类型,但是不能正确判断基本数据类型。
Object.prototype.toString.call
Object.prototype.toString.call(0)
Object.prototype.toString.call('aaa')
Object.prototype.toString.call(true)
Object.prototype.toString.call(null)
Object.prototype.toString.call(undefined)
Object.prototype.toString.call({})
Object.prototype.toString.call(function(){})
Object.prototype.toString.call([1,2,3])
为什么要调用call?
call 是函数的方法,用来改变 this 指向,用 apply 也可以 如果不改变this指向为我们的目标变量,this将永远指向调用的Object.prototype 例:
Object.prototype.toString([])
Object.prototype.toString.call([])
|