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

相关推荐
CappuccinoRose24 分钟前
CSS 语法学习文档(十三)
前端·css·学习·postcss·模块化·预处理器
im_AMBER24 分钟前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
じ☆冷颜〃1 小时前
随机微分层论:统一代数、拓扑与分析框架下的SPDE论述
笔记·python·学习·线性代数·拓扑学
半兽先生3 小时前
使用 retire.js 自动检测前端 JavaScript 库漏洞
开发语言·前端·javascript
扶苏10023 小时前
详解Vue3的自定义 Hooks
前端·javascript·vue.js
前路不黑暗@3 小时前
Java项目:Java脚手架项目的地图服务(十)
java·数据库·spring boot·笔记·学习·spring cloud·maven
-To be number.wan4 小时前
算法学习日记 | 双指针
c++·学习·算法
科技林总4 小时前
【系统分析师】9.1 信息系统安全体系
学习
爱问问题的小李4 小时前
AI生成的Threejs常用Api学习计划
人工智能·学习
沄媪4 小时前
CTF备赛学习
学习·ctf备赛·安全入门·windows安全系统