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

相关推荐
Z***25808 分钟前
JavaScript虚拟现实案例
开发语言·javascript·vr
断水客29 分钟前
如何在手机上搭建Linux学习环境
linux·运维·学习
safestar20121 小时前
React 19 深度解析:从并发模式到数据获取的架构革命
前端·javascript·react.js
j***12151 小时前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
Wild~~2 小时前
electron-vite
前端·javascript·electron
by__csdn2 小时前
Electron+Vite:实现electron + vue3 + ts + pinia + vite高效跨平台开发指南
前端·javascript·vue.js·typescript·electron·node.js·vue
国服第二切图仔2 小时前
Electron 鸿蒙pc开发环境搭建完整保姆级教程(window)
javascript·electron·harmonyos
宋辰月2 小时前
zustand
前端·javascript·html
z***I3942 小时前
JavaScript原型链
开发语言·前端·javascript
x***58702 小时前
JavaScript语音识别开发
开发语言·javascript·语音识别