当前位置:首页 > JavaScript

实现instanceof js

2026-01-31 19:08:20JavaScript

实现 instanceof 操作符

JavaScript 中的 instanceof 操作符用于检测一个对象是否是某个构造函数的实例。以下是手动实现 instanceof 功能的几种方法。

方法一:原型链遍历

通过递归遍历对象的原型链,检查是否与目标构造函数的 prototype 属性匹配。

function myInstanceof(obj, constructor) {
  let proto = Object.getPrototypeOf(obj);
  while (proto) {
    if (proto === constructor.prototype) {
      return true;
    }
    proto = Object.getPrototypeOf(proto);
  }
  return false;
}

方法二:直接使用原型链

利用 Object.prototype.isPrototypeOf 方法,检查目标构造函数的 prototype 是否在对象的原型链上。

function myInstanceof(obj, constructor) {
  return constructor.prototype.isPrototypeOf(obj);
}

方法三:结合 constructor 属性

通过检查对象的 constructor 属性是否指向目标构造函数。

实现instanceof js

function myInstanceof(obj, constructor) {
  return obj && obj.constructor === constructor;
}

注意事项

  1. 原始类型(如 numberstringboolean)无法通过 instanceof 检测,因为它们不是对象。
  2. 如果目标构造函数的 prototype 被修改,instanceof 的结果可能会变化。
  3. 跨框架或窗口的对象检测可能失效,因为不同全局环境中的构造函数不共享原型。

示例测试

function Person() {}
const p = new Person();

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

以上方法均能模拟 instanceof 的核心功能,根据具体需求选择合适的方法。

标签: instanceofjs
分享给朋友:

相关文章

js jquery

js jquery

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

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选…