当前位置:首页 > JavaScript

实现instanceof js

2026-03-13 17:01:44JavaScript

实现 JavaScript 的 instanceof 操作符

instanceof 用于检测构造函数的 prototype 属性是否出现在对象的原型链中。以下是手动实现 instanceof 功能的两种方法:

实现instanceof js

方法一:递归实现

通过递归遍历对象的原型链,检查是否存在目标构造函数的 prototype

实现instanceof js

function myInstanceof(obj, constructor) {
  if (obj === null || typeof obj !== 'object') return false;
  let proto = Object.getPrototypeOf(obj);
  if (proto === constructor.prototype) return true;
  return myInstanceof(proto, constructor);
}

方法二:循环实现

通过循环遍历原型链,避免递归可能导致的栈溢出问题。

function myInstanceof(obj, constructor) {
  if (obj === null || typeof obj !== 'object') return false;
  let proto = obj.__proto__;
  while (proto) {
    if (proto === constructor.prototype) return true;
    proto = proto.__proto__;
  }
  return false;
}

使用示例

function Person() {}
const p = new Person();
console.log(myInstanceof(p, Person)); // true
console.log(myInstanceof(p, Object)); // true
console.log(myInstanceof([], Array)); // true

注意事项

  • 仅适用于对象类型(非 null 和原始值)。
  • 使用 Object.getPrototypeOf()__proto__ 均可访问原型链。
  • 循环实现更高效,适合深层原型链的场景。

标签: instanceofjs
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…