# typeof
- 分不清 object、 null、 array
let arr = [1, 2]
console.log(arr.__proto__ === Array.prototype) // true
console.log(arr.__proto__ === Object.prototype) // false
let obj = {}
let fun = function(){}
let fun2 = () => {}
// 分不清 object、 null、 array
console.log(typeof obj) // object
console.log(typeof arr) // object
console.log(typeof fun) // function
console.log(typeof fun2) // function
console.log(typeof undefined) // undefined
console.log(typeof null) // object
console.log(typeof true) // boolean
console.log(typeof 1) // number
console.log(typeof NaN) // number
console.log(typeof 'aa') // string
# Object.prototype.toString.call()
- Object对象和它的原型链上各自有一个toString()方法
- 第一个返回的是一个函数,第二个返回的是值类型。
console.log(getType(obj)) // [object Object]
console.log(getType(arr)) // [object Array]
console.log(getType(fun)) // [object Function]
console.log(getType(fun2)) // [object Function]
console.log(getType(undefined)) // [object Undefined]
console.log(getType(null)) // [object Null]
console.log(getType(true)) // [object Boolean]
console.log(getType(1)) // [object Number]
console.log(getType('aa')) // [object String]
function getType(v) {
return Object.prototype.toString.call(v)
}