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

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