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

相关推荐
梦650几秒前
Vue 中 v-for 与 v-if 优先级
前端·javascript·vue.js
枷锁—sha12 分钟前
【PortSwigger Academy】SQLi UNION 攻击 (确定列数)
服务器·数据库·学习·安全·网络安全
1379号监听员_12 分钟前
PID学习笔记
笔记·学习
摘星编程19 分钟前
在OpenHarmony上用React Native:MapView路线规划
javascript·react native·react.js
Tina Tang25 分钟前
Agentic AI学习笔记(2)
笔记·学习
木易 士心27 分钟前
Vue 响应式数据失效全解析:从原理机制到工程实践
前端·javascript·vue.js
AC赳赳老秦29 分钟前
ELK栈联动:DeepSeek编写Logstash过滤规则与ES日志分析逻辑
运维·前端·javascript·低代码·jenkins·数据库架构·deepseek
_李小白30 分钟前
【Android GLSurfaceView源码学习】第三天:GLSurfaceView的Surface、GLES与EGLSurface的关联
android·学习
m0_7482404430 分钟前
ThinkPHP框架学习全攻略
学习
zhangrelay35 分钟前
ROS Noetic 与 Ubuntu 24.04
笔记·学习