类型判断

188 阅读1分钟

经常遇到问如何判断一个数组之类的问题

Array.isArray() //用于确定传递的值是否是一个 Array。
Array.isArray([]) // true
Array.isArray({}) // false
Array.isArray('') // false
Array.isArray(Array.prototype) // true

当然Array.isArray() 兼一些容性可能稍差,最保险的方法还是使用Object.prototype.toString.call,可以写个专门的类型判断的方法

function classof(o) {  
  if (o === null) return "Null";  
  if (o === undefined) return "Undefined";  
  return Object.prototype.toString.call(o).slice(8, -1);
}

classof({}) // "Object"
classof([]) // "Array"
classof('') // "String"
classof(null) // "Null"
classof(undefined) // "Undefined"
classof(function() {}) // "Function"
classof(Symbol) // "Function"
classof(Symbol()) // "Symbol"