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

相关推荐
Heo1 小时前
大厂前端调试不能只会debugger
前端·javascript·面试
小O的算法实验室2 小时前
IEEE TII,学习为多目标深度学习生成偏好
人工智能·深度学习·学习
windliang2 小时前
Claude Code 源码分析(十二):错误处理与自动恢复:让 Agent 稳定运行
前端·javascript·面试
默_笙2 小时前
🛬 前端路由的"高级玩法":懒加载、404、鉴权路由,一个都不能少(下篇)
前端·javascript
sunly_2 小时前
TypeScript:3、类型声明与类型推断
javascript·ubuntu·typescript
吃好睡好便好3 小时前
说说高温对情绪的影响
学习·生活·情绪·高温
for_ever_love__3 小时前
python基础语法学习: 文件操作
python·学习
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(38):AMA——用多智能体协作动态选择记忆粒度
论文阅读·人工智能·学习
奥莱维4 小时前
【无标题】
java·前端·javascript
黄金决明子5 小时前
浏览器Window底层操作全解
前端·javascript