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 小时前
C语言学习(五)——输入/输出
c语言·开发语言·学习
学编程的闹钟3 小时前
E语言计算器开发全攻略
学习
薛定e的猫咪3 小时前
Claude Code 完整学习手册:安装配置、CCR、MCP、插件与 Superpowers开发框架
学习
雾山大叔4 小时前
多会话浏览器串口调试助手
经验分享·笔记·学习
小凯123455 小时前
pytest框架-详解(学习pytest框架这一篇就够了)
python·学习·pytest
今儿敲了吗5 小时前
29| 高考志愿
c++·笔记·学习·算法
浅念-6 小时前
C++ 模板进阶
开发语言·数据结构·c++·经验分享·笔记·学习·模版
coding随想7 小时前
TypeScript 高级类型全攻略:从“可表达性”到“类型体操”的实践之路
前端·javascript·typescript
WWWWW先生7 小时前
02 登录功能实现
前端·javascript