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

相关推荐
谎言西西里1 小时前
JS 高手必会:手写 new 与 instanceof
javascript
呱呱巨基3 小时前
Linux 进程概念
linux·c++·笔记·学习
yong15858553433 小时前
2. Linux C++ muduo 库学习——原子变量操作头文件
linux·c++·学习
天问一3 小时前
使用 Vue Router 进行路由定制和调用的示例
前端·javascript·vue.js
IDIOT___IDIOT4 小时前
KNN and K-means 监督与非监督学习
学习·算法·kmeans
Rousson5 小时前
硬件学习笔记--91 TMR型互感器介绍
笔记·学习
韩立学长5 小时前
【开题答辩实录分享】以《基于Vue的非遗文化知识分享平台的设计与实现》为例进行选题答辩实录分享
前端·javascript·vue.js
前端 贾公子5 小时前
Vue响应式原理学习:基本原理
javascript·vue.js·学习
飛6795 小时前
从 0 到 1 掌握 Flutter 状态管理:Provider 实战与原理剖析
开发语言·javascript·ecmascript
Slaughter信仰6 小时前
图解大模型_生成式AI原理与实战学习笔记前四张问答(7题)
人工智能·笔记·学习