Open ForeveHG opened 3 years ago
Object.prototype.toString.call方法会返回一个"[object xxx]"的字符串,如果参数为null或undefined会直接返回"[object null]"或“[object undefined]”,其他参数会转为对象,参数为基本类型时就是“封箱”,然后返回对象内部的[[class]]属性,新标准中是返回[Symbol.toStringTag]属性,所以Object.prototype.toString.call可以很好的判断基本类型和内置对象的类型,对于自定义类型,可以在自定义[Symbol.toStringTag]属性后进行判断,比如
class People {}
Object.prototype.toString.call(People) //[object Function]
People[Symbol.toStringTag] = 'People' //自定义[Symbol.toStringTag]属性
Object.prototype.toString.call(People) //[object People]
instanceof是通过判断A对象的原型链上是否包含B对象来确定A对象是否是B类型的,返回值是true或者false,它可以判断基本类型,内置类型,自定义类型
Array.isArray只用来判断对象是否为数组
Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()