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

相关推荐
xianrenli389 分钟前
MSAI:第四周练习:思维链 (Chain-of-Thought) 提示与参数调优
学习·msai
2601_961875249 分钟前
法考备考计划表|学习计划|资料已整理
java·开发语言·学习·eclipse·tomcat·c#·hibernate
大家的林语冰19 分钟前
超越 TypeScript,Flow 强势回归,语法高仿 TS,功能更丰富,类型更安全!
前端·javascript·typescript
星空19 分钟前
html\css\js入门
javascript·css·html
重生之我是Java开发战士20 分钟前
【Java SE】多线程(三):单例模式,阻塞队列,线程池与定时器
java·javascript·单例模式
qq_5710993524 分钟前
学习周报四十九
学习
一锅炖出任易仙25 分钟前
创梦汤锅学习日记day34
学习·游戏引擎
lijgvnns31 分钟前
个人AI编程工具的vibe coding实践:从爬虫到导出Excel的全流程
开发语言·javascript·ecmascript
半导体守望者36 分钟前
AE AZX射频调谐器射频负载匹配(调谐)原理PPT
学习·机器人·自动化·制造·模块测试