JavaScript类型检测笔记之instanceof
instanceof
语法:object instanceof class
作用:判断一个实例是否属于某种类型
原理:判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上Object.getPrototypeOf(object) === class.prototype
检测一下:
1 2 3 4 5 6 7 8 9 | function AA(){} AA.prototype = {}; var aa = new AA(); console.log(aa instanceof AA);//true console.log(new String('hello') instanceof String); //true console.log(new Number(1) instanceof Number); //true console.log(function(){} instanceof Function); //true console.log({} instanceof Object); //true console.log([] instanceof Array); //true |
instanceof运算符似乎是用来弥补typeof的不足而出现,它可以判断复杂引用类型。两者结合起来用比较靠谱。可是instanceof在多个frame之间还是存在一些问题比如:[] instanceof window.frames[0].Array //false。因为 Array.prototype !== window.frames[0].Array.prototype
关于instanceof的内容远不止我上面所记录,这次仅考虑它在类型判断方面的作用,期望自己在以后的项目中能深入理解!
参考:
MDN中文-instanceof
JavaScript instanceof 运算符深入剖析 - IBM
相关:
JavaScript类型检测笔记之typeof
JavaScript类型检测笔记之constructor