instanceof 的作用
引用数据类型判断: 用来判断一个引用数据类型是否属于构造函数
继承关系判断: 用来判断一个实例是否属于它的父类型
实现原理
首先判断左边的变量的隐式原型(proto)是否全等于右边的显式原型(prototype),如果相等返回true,如果不等则沿着原型链依次向上进行判断,如果都不等则返回false
手动实现 instanceof
function instance_of (L, R) { //L 表示左表达式,R 表示右表达式
var O = R.prototype;
L = L.__proto__;
while(true) {
if ( L === null ) return false;
if ( O === L ) return true; // 这里重点:当 O 严格等于 L 时,返回true
L = L.__proto__;
}
}
参考:《instanceof的底层实现原理,手动实现一个instanceof》
ps:文末附上汇总文章链接《一名【合格】前端工程师的自检清单【自检ing】》