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

相关推荐
mayaairi13 分钟前
JS DOM与事件处理完全指南
服务器·前端·javascript
蒸蒸yyyyzwd15 分钟前
cpp选手备战秋招学习笔记day17
笔记·学习
qq_4260039629 分钟前
多语言新增语种全量测试策略的测试范围
前端·javascript·python·自动化
阮小贰1 小时前
干支编码的确定性实现:节气切分 + 1000 条溯源断语(附 JS 源码)
开发语言·javascript·ecmascript
陈天伟教授1 小时前
【30天学会机械制图 第15 天】项目四 学会看零件图 任务1 学习零件的基本表达方法 (1)
学习·工程制图·机械制图
小张帅三代1 小时前
yolo基础学习笔记
笔记·学习·yolo
Mh1 小时前
听说我兄弟喜欢跑车,所以必须安排上
前端·javascript·vue.js
zttbee1 小时前
vue学习(白话功能版)
前端·vue.js·学习·前端框架
qq_426003961 小时前
多语言新增语种全量测试策略
前端·javascript·python·pycharm·自动化
黄敬峰1 小时前
从零搭建 Next.js 单词管理系统:Supabase + Drizzle ORM + shadcn/ui 全栈实战
javascript·面试