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

相关推荐
Mr Xu_6 分钟前
Vue3 + Element Plus 实战:App 版本管理后台——动态生成下载二维码与封装文件上传
前端·javascript·vue.js
比特森林探险记12 分钟前
Vue基础语法与响应式系统详解
前端·javascript·vue.js
2601_9498477536 分钟前
Flutter for OpenHarmony 剧本杀组队App实战:邀请好友功能实现
开发语言·javascript·flutter
了一梨1 小时前
SQLite3学习笔记6:UPDATE(改)+ DELETE(删)数据(C API)
笔记·学习·sqlite
FITA阿泽要努力1 小时前
Agent Engineer-Day 1 初始智能体与大语言模型基础
java·前端·javascript
三翼鸟数字化技术团队1 小时前
watchEffect的两种错误用法
前端·javascript·vue.js
局外人LZ1 小时前
Decimal.js 完全指南:解决前端数值精度痛点的核心方案
开发语言·前端·javascript
飘若随风1 小时前
JS学习系列-01-什么是JS
开发语言·javascript·学习
摘星编程1 小时前
OpenHarmony环境下React Native:hitSlop热区扩展配置
javascript·react native·react.js
mango_mangojuice2 小时前
C++ 学习笔记(string类)
开发语言·c++·笔记·学习