JS中instanceof的使用小结
前言
在 JavaScript 中,instanceof 是判断引用类型的重要工具。它不像 typeof 那样只能识别基础类型,而是能够深入“家谱”,判断一个实例是否属于某个构造函数。本文将带你通过手写实现,彻底掌握其底层原理。
一、 实现思路
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
1. 实现思路
类型检查:首先确保左侧是一个对象或函数(基础类型直接返回
false)。获取原型:取得左侧对象的原型
__proto__和右侧构造函数的原型prototype。循环遍历:沿着左侧的原型链不断向上查找(
__proto__ = __proto__.__proto__)。结果判定:
- 如果查找到某个环节等于右侧的
prototype,则返回true。 - 如果查找到原型链的尽头(
null)仍未找到,则返回false。
- 如果查找到某个环节等于右侧的
二、 具体实现
function myInstanceof(obj, func) {
if (typeof obj !== 'object' && typeof obj !== 'function') {
return false;
}
let proto = obj.__proto__;
const prototype = func.prototype;
while (proto !== prototype) {
if (proto === null) {
return false;
}
proto = proto.__proto__;
}
return true;
}
const date = new Date();
console.log(myInstanceof(date, Object)); // true
console.log(myInstanceof([1, 2], Array)); // true
到此这篇关于JS中instanceof的使用小结的文章就介绍到这了,更多相关JS instanceof内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
uniapp添加操作日志的方法(uniapp、日志、文件、html5+)
近期一直在写微信小程序,有一个问题一直没有解决,就是在测试环境中调试代码会打印很多日志,方便看到问题所在,这篇文章主要给大家介绍了关于uniapp添加操作日志(uniapp、日志、文件、html5+)的相关资料,需要的朋友可以参考下2023-11-11
npm install报错无法创建packge.json文件的解决办法
当你在运行 npm install 时遇到错误,提示无法找到 package.json 文件,也没有创建一个 package.json 文件,只创建了一个package-lock.json文件,本文给大家介绍详细的解决办法,需要的朋友可以参考下2024-02-02
cookie在javascript中的使用技巧以及隐私在服务器端的设置
cookie在javascript中的使用技巧,需要的朋友可以参考下2012-12-12
前端(JavaScript|Vue|React)如何实现流式输出Streaming
本文详细介绍了前端流式输出的实现方法,包括核心原理、原生JavaScript实现、主流框架支持、高级优化策略及实际应用案例,流式输出通过分块传输数据,提升用户体验,优化资源利用,并提供了多种调试工具和注意事项2026-01-01


最新评论