当前位置:首页 > JavaScript

实现instanceof js

2026-04-05 11:24:44JavaScript

实现 instanceof 操作符

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

function myInstanceof(obj, constructor) {
  let proto = Object.getPrototypeOf(obj);
  const prototype = constructor.prototype;

  while (proto !== null) {
    if (proto === prototype) return true;
    proto = Object.getPrototypeOf(proto);
  }

  return false;
}

工作原理

  1. 获取对象的原型和构造函数的 prototype 属性
  2. 沿着原型链向上查找,比较当前原型是否等于构造函数的 prototype
  3. 如果找到匹配则返回 true,否则直到原型链尽头返回 false

使用示例

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

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

注意事项

  1. 原始值(如 'string', 42, true)使用 instanceof 会始终返回 false
  2. 如果构造函数的 prototype 被修改,instanceof 的结果也会相应变化
  3. 跨框架对象检测可能不可靠,因为不同执行环境有不同的全局对象

替代方案

对于更可靠的类型检查,可以考虑使用:

Object.prototype.toString.call(obj) === '[object Array]'

或 ES6 引入的:

实现instanceof js

Array.isArray(obj)

标签: instanceofjs
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现图表

js实现图表

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现vue弹窗

js实现vue弹窗

实现 Vue 弹窗的基本方法 使用 Vue.js 实现弹窗功能可以通过组件化方式完成。以下是一个简单的弹窗实现示例,包含显示/隐藏控制、内容插槽和基础样式。 弹窗组件代码 创建 Modal.vue…

vue js实现登录

vue js实现登录

Vue.js 登录功能实现 依赖安装 确保项目已安装 Vue.js 和必要的依赖库(如 Vue Router、Axios)。通过以下命令安装: npm install vue-router axio…