axios源码学习

1 判断一个对象是否普通对象

  • Symbol.toStringTag :可以修改Object.prototype.toString.call返回的后缀,普通对象自带该属性,不需要设置,如果设置说明该对象不是普通对象
  • Symbol.iterator:拥有该属性的对象可以使用for of进行遍历,普通对象没有该属性
javascript 复制代码
//Object.propotype 指向null 说明它是最后的Object
//
const isPlainObject = (val) => {
	const str = Object.prototype.toString.call(val)
	const type = str.slice(8,-1).toLowerCase();
	if (type !== 'object') {
		return false	
	}
	//是object
	const prototype = Object.getPropertyOf(val);
	return (prototype === Object.prototype || prototype === null || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val)
	
}

2

相关推荐
遇乐的果园2 分钟前
前端学习笔记-vue列表处理
前端·vue.js·学习
小弥儿9 分钟前
GitHub今日热榜 | 2026-07-16:AI知识库与反AI味设计成今日双主线
人工智能·学习·github
何时梦醒16 分钟前
🤖 RAG 文档分割器(Splitter)深度学习笔记 —— 从零搭建知识库文档处理流水线
前端·javascript·人工智能
菩提树下的打坐19 分钟前
CI 中的测试分层:让金字塔真正落地
学习·ci/cd
ss27324 分钟前
Vue 完整版本发展史时间线(2013–2026)|版本迭代里程碑+核心特性对照表
前端·javascript·vue.js
用户9385156350725 分钟前
知识库预处理实战:从URL加载到语义分块的全链路解析
javascript·人工智能·全栈
weedsfly40 分钟前
前端开发中的命令模式——从点餐退单到异步任务调度
前端·javascript·面试
菩提树下的打坐1 小时前
flaky 测试治理:用工程化方式根治“上次过这次不过“
学习
Z5998178411 小时前
c#软件开发学习笔记--事务、索引
笔记·学习·c#
weedsfly1 小时前
前端中的适配器模式 vs 外观模式
前端·javascript·面试