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

相关推荐
minglie16 分钟前
订阅莫名变少的奇怪现象
学习
zhangrelay12 分钟前
手机长周期测评十周年终结版本-2026
笔记·学习·智能手机
boy快快长大23 分钟前
【Jenkins】入门学习
运维·学习·jenkins
鬼手点金37 分钟前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat
罗丹丹Luna1 小时前
JavaScript计算任务峰值并发:同一时刻先结束还是先开始
javascript
m4Rk_1 小时前
【论文阅读】Agent记忆机制(106):COUNTERMEM——用可执行世界模型验证“如果当时换个动作”的反事实记忆
论文阅读·人工智能·学习·开源·github
古夕1 小时前
同样的 font-weight,为什么这个项目的字体就是更细?
前端·javascript
测试运维日常笔记2 小时前
SQL 快速学习笔记:1~2 小时掌握面试重点
笔记·sql·学习
牛肉胡辣汤2 小时前
Blender + Three.js 开发讲解:从 .blend 到能转的产品页
开发语言·javascript·blender
fanged2 小时前
Audio学习4(DSP)(TODO)
学习