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

相关推荐
爱宁~4 分钟前
UnityShader学习笔记[二百九十九]UGUI中的Mask遮罩半透明Shader
笔记·学习
鸣弦artha22 分钟前
Flutter框架跨平台鸿蒙开发——Extension扩展方法
android·javascript·flutter
方见华Richard1 小时前
对话量子场论:语言如何产生认知粒子V0.3
人工智能·交互·学习方法·原型模式·空间计算
啦哈拉哈2 小时前
【Python】知识点零碎学习4
python·学习·算法
HyperAI超神经2 小时前
【vLLM 学习】Rlhf Utils
人工智能·深度学习·学习·机器学习·ai编程·vllm
筱歌儿2 小时前
TinyMCE-----word表格图片进阶版
开发语言·javascript·word
P.H. Infinity2 小时前
【QLIB】三、学习层(一)
学习
茜子.Java2 小时前
分享一个输入 allure --version 报错解决方式
学习
Ama_tor2 小时前
obsidian进阶の插件系列|Templater从小白到菜鸟
javascript·markdown·插件·obsidian
wuhen_n3 小时前
初识TypeScript
javascript·typescript