一、instanceof运算符
instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true;否则返回false.
注意点:
a.当通过instanceof判断一个对象是否是一个类的实例的时候,这个判断也会包含对“父类”的检测。
b.如果instanceof的左操作数不是对象的话,instanceof返回false,如果右操作数不是函数,则抛出一个类型错误异常。
检测一个对象的类型,推荐使用Object.prototype.toString方法;因为这是唯一一个可依赖的方式,typeof的一些返回值在标准文档中并未定义,因此不同的引擎肯能不同,我们使用Object.prototype.toString方法:
二、isPrototypeOf()方法
检测一个对象是否是另一个对象的原型(或者处于原型链中)
Mozilla实现的JavaScript对外暴露了一个专门命名为_proto_属性,用以直接查询/设置对象的原型,但并不推荐使用_prototo_,因为尽管Safari和Chrome的当前版本都支持它,但IE和Opera还未实现它。