js之获取对象类型的几种方式
2020-03-21 本文已影响0人
shandamengcheng
- 通过typeof
typeof的所有返回值包括以下几种:
- number
- boolean
- string
- undefined
- function
- symbol
- object
对于基本类型或者函数,通过typeof很好判断,但是对于object类型,使用typeof就显得宽泛了。
- 通过instanceof
instanceof的原理是,判断构造函数的原型是否在这个对象的原型链上。
比如:
[1,2,3] instanceof Object // true
这是因为,[1,2,3]是一个Array类型实例,即,[1,2,3]的原型对象为Array.prototype,而Array.prototype这个对象中的一个内部指针(proto_),即它的原型指针指向Object.prototype,因此Object.prototype就在[1,2,3]的原型链上,因此结果为true.
-
通过constructor
我们知道,在一个实例的原型对象上有一个constructor属性,指向创建这个实例的构造函数,因此,我们可以通过oject.constructor来获取它的构造函数,也就是它所属的类型。 -
通过Object.prototype.toString()
Object.prototype.toString()返回的是对象类型,格式为"[object Array]',类似这样。但是这样返回的是Object.prototype的对象类型,即[object Object] . 如果想要用在每个特定的实例上,应该加上call或者apply方法,比如:Object.prototype.toString.call(obj)。这样,返回的就是obj的类型了。