js属于动态类型语言,那么我们如何判断 A实例是否和 b对象实例属于同一类型呢?比如 array === array ,Error === Error,自定义类的实例比较 等等对象类型判断。如果只用 typeof 肯定是不行的。因为不管 array 还是 object、error、或自定义实例类型都是返回 object 。其实我们可以通过对象实例都原型比较是否属于同一个对象类型。
Object.getPrototypeOf(obj)
方法返回指定对象的原型(内部[[Prototype]]属性的值)。所以我们可以通过这个方法来判断两个对象是否属于同一个类。
// 比如判断目标对象是否是Errro类型。如果属于同一个类,返回true1,否则返回false。
if (Object.getPrototypeOf(new Error()) === Object.getPrototypeOf(item))
return true
else
return false
instanceof 运算符(推荐)
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。这样我们就可以判断是否为同一类的子类。
if (item instanceof Error) {
return true
} else {
return false
}