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

相关推荐
小poop33 分钟前
从“雷峰塔”到“对象”:JavaScript基础语法入门指南
前端·javascript
Li_RuiQi1 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
Canmag 兴隆磁性1 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率
chunyublog1 小时前
HDFS 上传文件名空格问题排障教程
前端·javascript·npm
lengxuenong1 小时前
区间覆盖问题 · 简明学习手册1
java·学习·算法
悟道书生2 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
Be for thing3 小时前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
FRing033 小时前
JavaScript入门到精通二十九(内置构造函数(Object、Array))
开发语言·前端·javascript
小嘉丶学长3 小时前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
天才熊猫君3 小时前
前端队列,我是怎么从 `push + shift` 换成游标的
前端·javascript