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

相关推荐
夏炳辉.8 分钟前
零基础Linux PostgreSQL(psql)从安装到集群高可用全套学习大纲
linux·学习·postgresql
xiaominlaopodaren12 分钟前
three.js最小地图运行时(十):接入离线逻辑瓦片剖面
javascript·gis·three.js
paopaokaka_luck26 分钟前
基于springboot3+vue3+uniapp的河南非遗数字图谱小程序(协同过滤算法、数字图谱展示、ECharts 图形化分析)
java·前端·spring boot·学习·小程序·uni-app·echarts
再卷还是菜37 分钟前
Kubernetes(k8s) 控制器的详细介绍与总结
笔记·学习·kubernetes
@松40 分钟前
【无标题】STM32103FC8-DMA—直接存储区访问学习
stm32·嵌入式硬件·学习
独立开发之道1 小时前
【Three.js教程】 图元速查:官方内置的立体图形
开发语言·javascript·ecmascript
存在morning1 小时前
【Flink SQL 学习笔记 三】维表关联:Lookup Join、Temporal Join、窗口 Join
sql·学习·flink
你想知道什么?1 小时前
提示词工程-学习笔记
笔记·学习
minglie11 小时前
vivado中视频ip相关接口
学习