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

相关推荐
柒儿吖6 分钟前
Electron for 鸿蒙PC 窗口问题完整解决方案
javascript·electron·harmonyos
flashlight_hi33 分钟前
LeetCode 分类刷题:404. 左叶子之和
javascript·算法·leetcode
木易 士心1 小时前
th-table 中 基于双字段计算的表格列展示方案
前端·javascript·angular.js
('-')1 小时前
《从根上理解MySQL是怎样运行的》第四章学习笔记
笔记·学习·mysql
DIY机器人工房1 小时前
嵌入式面试题:看你学习了自动控制原理这门课,讲一下欠驱动系统?
stm32·单片机·学习·嵌入式·自动控制原理
toooooop82 小时前
uniapp多个页面监听?全局监听uni.$emit/$on
前端·javascript·uni-app
星火飞码iFlyCode2 小时前
iFlyCode+SpecKit应用:照片等比智能压缩功能实现
前端·javascript
GISer_Jing3 小时前
3DThreeJS渲染核心架构深度解析
javascript·3d·架构·webgl
('-')3 小时前
《从根上理解MySQL是怎样运行的》第五章学习笔记
笔记·学习·mysql
拉不动的猪4 小时前
文件下载:后端配置、前端方式与进度监控
前端·javascript·浏览器