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

相关推荐
老前端的功夫13 分钟前
TypeScript 全局类型声明:declare关键字的深度解析与实战
linux·前端·javascript·ubuntu·typescript·前端框架
EndingCoder27 分钟前
TypeScript 入门:理解其本质与价值
前端·javascript·ubuntu·typescript·node.js
2501_946244781 小时前
Flutter & OpenHarmony OA系统弹窗对话框组件开发指南
javascript·flutter·microsoft
東雪木1 小时前
编程算法学习——数组与排序算法
学习·算法
代码游侠1 小时前
复习—sqlite基础
linux·网络·数据库·学习·sqlite
烟袅1 小时前
从定时器管理出发,彻底搞懂防抖与节流的实现逻辑
前端·javascript
前端小L1 小时前
贪心算法专题(十三):画地为牢的艺术——「划分字母区间」
javascript·算法·贪心算法
坚持学习前端日记2 小时前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新
北冥有一鲲2 小时前
A2A协议与LangChain.js实战:构建微型软件工厂
开发语言·javascript·langchain
汉堡包0012 小时前
【面试总结】--安服实习岗(2)
学习·安全·web安全·网络安全·面试