// 首先获取对象的原型,可以通过对象的 __proto__ 属性获取,但是由于该属性并不是标准属性,因此不推荐使用。推荐使用 Object.getPrototypeOf() 方法获取对象的原型。 // 获取构造函数。 // 判断构造函数的原型是否在对象的原型链上,如果是则返回 true,否则继续沿着原型链向上查找 function myInstanceOf(obj, constructor) { // 获取对象的原型 let proto = Object.getPrototypeOf(obj); // 获取构造函数的原型 let prototype = constructor.prototype; // 判断构造函数的原型是否在对象的原型链上 while (proto !== null) { if (proto === prototype) { return true; } proto = Object.getPrototypeOf(proto); } return false; }