原型和原型链-instanceof的底层实现原理
instanceof的底层实现原理(参考文档)
instanceof的实现实际上是调用JS的内部函数 [[HasInstance]]
来实现的,其实现原理是:只要右边变量的prototype在左边变量的原型链上即可。因此instanceof在查找过程中会遍历左边变量的原型链,直到找到右边变量的prototype,如果查找失败会返回false。
function instance_of(L, R) { // L 表示instanceof左边,R 表示instanceof右边 let O = R.prototype; // 取 R 的显示原型 L = L.__proto__; // 取 L 的隐式原型 while (true) { // 循环执行,直到 O 严格等于 L if (L === null) return false; if (O === L) return true; L = L.__proto__; // 获取祖类型的__proto__ } }