instanceof 和 typeof

109 阅读1分钟

一、typeof 可以判断变量属于哪种类型

一般可以判断 string function number object boolean undefined symbol 7种类型

但是不能判断object具体属于哪种数据类型

二、instanceof 主要判断实例是否属于某种类型

let person = function () {}

let programmer = function () {}

programmer.prototype = new person()

let nicole = new programmer()

nicole instanceof person // true

nicole instanceof programmer // true

即可以用如下方法判别类型归属

function Foo() {}

Object instanceof Object // true

Function instanceof Function // true

Function instanceof Object // true

Foo instanceof Foo // false

Foo instanceof Object // true

Foo instanceof Function // true

三、Object.prototype.toString.call(obj)判断

Object.prototype.toString.call(1) // "[object Number]"

Object.prototype.toString.call('hi') // "[object String]"

Object.prototype.toString.call({a:'hi'}) // "[object Object]"

Object.prototype.toString.call([1,'a']) // "[object Array]"

Object.prototype.toString.call(true) // "[object Boolean]"

Object.prototype.toString.call(() => {}) // "[object Function]"