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

相关推荐
华洛3 分钟前
聊聊我逃离前端开发前的思考
前端·javascript·vue.js
早點睡39012 分钟前
ReactNative项目OpenHarmony三方库集成实战:react-native-gifted-charts
javascript·react native·react.js
qq_3896001313 分钟前
pads 学习笔记
笔记·学习
紫_龙28 分钟前
最新版vue3+TypeScript开发入门到实战教程之路由详解三
前端·javascript·typescript
pacong37 分钟前
vscode使用
javascript·vue.js·vscode
M malloc1 小时前
软件测试学习第一期
软件测试·学习·可用性测试
头疼的程序员1 小时前
计算机网络:自顶向下方法(第七版)第六章 学习分享(三)
网络·学习·计算机网络
与数据交流的路上1 小时前
linux-系统日志的归档
linux·运维·javascript
醇氧1 小时前
【学习】现代计算机有多少种架构
学习·架构
jacklood1 小时前
使用STM32的迪文屏控制使用参考方式
前端·javascript·stm32