instanceof 原理及实现
核心记住一句话:用来判断谁是谁的爹
1. 核心原理
instanceof 运算符用于检测一个对象是否属于某个构造函数的实例(也就是判断构造函数的 prototype 属性是否出现在对象的原型链上的任何位置)。
2. 经典面试题:手写 instanceof
3. 面试考点
(1) 基础类型误区
instanceof 只能正确判断引用类型 (对象),对于基本类型字面量会失效。
(2) 原型链查找
解析:
Function是所有函数的构造函数 (包括它自己)。Function.__proto__ === Function.prototype-> trueObject本身也是一个函数。Object.__proto__ === Function.prototype-> true
(3) iframe 跨环境问题
如果你的页面主要包含一个 iframe,iframe 中的数组和主窗口的数组是不同的构造函数。
解决方案:使用 Array.isArray() 或 Object.prototype.toString.call(arr) === '[object Array]'。
(4) Symbol.hasInstance
ES6 允许通过 static 方法自定义 instanceof 行为。

