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

相关推荐
近津薪荼11 分钟前
优选算法——双指针专题7(单调性)
c++·学习·算法
2601_9498333916 分钟前
flutter_for_openharmony口腔护理app实战+意见反馈实现
android·javascript·flutter
峥嵘life25 分钟前
Android 16 EDLA测试STS模块
android·大数据·linux·学习
Trae1ounG32 分钟前
Vue Iframe
前端·javascript·vue.js
invicinble36 分钟前
学习的门道和思路
java·开发语言·学习
爱上妖精的尾巴1 小时前
8-1 WPS JS宏 String.raw等关于字符串的3种引用方式
前端·javascript·vue.js·wps·js宏·jsa
hvang19881 小时前
某花顺隐藏了重仓涨幅,通过chrome插件计算基金的重仓涨幅
前端·javascript·chrome
web打印社区1 小时前
vue页面打印:printjs实现与进阶方案推荐
前端·javascript·vue.js·electron·html
sayang_shao1 小时前
Rust多线程编程学习笔记
笔记·学习·rust