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

相关推荐
网络与设备以及操作系统学习使用者几秒前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
徐安安_ye110 分钟前
FlashAttention学习路线:从调API到写算子,你该走哪条路
python·学习
水云桐程序员11 分钟前
学习 React Native(简称 RN)的路径
学习·react native·react.js
lizhihai_9912 分钟前
股市学习心得-技术指标学习(布林线+MACD)
大数据·人工智能·学习
এ慕ོ冬℘゜13 分钟前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe515 分钟前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
Dxy123931021619 分钟前
JS列表获取指定范围值的 N 种方法
开发语言·javascript·ecmascript
蜡笔小电芯23 分钟前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
Hilaku30 分钟前
从 15MB 减到 800KB,一行 ffmpeg 解决3D 渲染卡顿问题
前端·javascript·程序员
JiaWen技术圈33 分钟前
React Native 存在水合(Hydration)问题吗
javascript