1.可以判断是不是某个类型的实例
2.不能校验原始数据类型
3.原理就是找实例的__proto__ 是不是等于构造函数的prototype
__proto__一直找 直到找到null为止
/**
*
* @param {实例} vm
* @param {构造函数} VM
* @returns
*/
function instanceOf(vm, VM) {
VM = VM.prototype;
vm = vm.__proto__;
while (true) {
if (vm === null) return false;
if (vm === VM) return true;
vm = vm.__proto__;
}
}
class A {}
let a = new A();
console.log(instanceOf(a, A)); // true