当前位置:首页 > 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 属性是否指向目标构造函数。

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 的核心功能,根据具体需求选择合适的方法。

实现instanceof js

标签: instanceofjs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

js jquery

js jquery

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