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

相关推荐
ldmd2845 分钟前
Typescript 入门篇-3
javascript·typescript·notepad++
Cobyte7 分钟前
18.【SolidJS】 采用 template 内容模板元素创建 DOM 元素
前端·javascript·vue.js
提子拌饭13315 分钟前
Column 与 Scroll 联动:可滚动的纵向列表 —— HarmonyOS NEXT 原生 ArkTS 布局深度教程
学习·华为·harmonyos·鸿蒙
怕浪猫27 分钟前
Electron 开发实战(十二):安全性最佳实践|彻底杜绝漏洞、代码执行与数据泄露
前端·javascript·electron
AI_零食43 分钟前
鸿蒙原生 ArkTS 布局方式——Column 最大高度约束:constraintSize maxHeight 防溢出
学习·华为·harmonyos·鸿蒙·鸿蒙系统
千纸鹤の脉搏44 分钟前
多线程的初步使用
java·开发语言·学习·多线程
fox_lht1 小时前
GPUI 框架完整学习教程
学习·rust·gpui
一楼的猫1 小时前
茄子写作助手是什么——网文作者长篇小说AI创作工具完整说明
人工智能·学习·机器学习·chatgpt·ai写作
AI_零食1 小时前
HarmonyOS-鸿蒙原生 ArkTS 布局系统:width(‘100%‘) 的本质与 padding 陷阱
前端·学习·华为·harmonyos·鸿蒙
weixin_446260851 小时前
Typora 插件开发实战:基于 JavaScript/HTML 构建定制化 Markdown 扩展
开发语言·javascript·html