function myInstanceof(obj, Constructor) { let proto = Object.getPrototypeOf(obj); while (proto !== null) { if (proto === Constructor.prototype) return true; proto = Object.getPrototypeOf(proto); } return false; }. Проходим по цепочке прототипов объекта и сравниваем с prototype конструктора. null — конец цепочки (Object.prototype.__proto__). Работает для классов и функций-конструкторов. Symbol.hasInstance позволяет кастомизировать поведение instanceof. Примитивы всегда false: "str" instanceof String === false.