源码阅读
最近翻来了 axios 源码,信心满满的看了会,虽然哪跟哪都没串起来,但是意外收获了一些新的想法。
有几组不错的知识点,对比看,比单独看每个知识点,更有趣一些。
遇到有趣的知识点,当然要分享一下。
文章速读
本文从 axios 的源码联想到了几个不错的知识点对比。
阅读文章,可以有以下收获:
知识点对比开始
delete or undefined, 谁是更好的选择?
技术讨论小剧场
一:这里为什么要用 delete 删除这个属性。
某:因为异步请求里不能带上这个属性。
一:把值设置成 undefined,JSON.stringify 方法会过滤掉值为 undefined 的对象属性。
某:这个方法好像挺不错的。等等,我要是没有用到 JSON.stringify 方法呢?
一:写个判断方法。
某:键盘已递上。
undefined 值的判断方法
const typeOfTest = type => thing => typeof thing === type;
/**
* Determine if a value is undefined
*
* @param {*} val The value to test
*
* @returns {boolean} True if the value is undefined, otherwise false
*/
const isUndefined = typeOfTest('undefined');
const val = undefined;
const val2 = 2;
isUndefined(val) // true
isUndefined(val2) // false
某:怎么写的这么快!
一:当然了,这可是 axios 源码里采用的方法。
某:所以结论就是,推荐将对象的值设置为 undefined,而不是delete 它。
一:是的。
某:再讲点 delete 的知识点。这个操作符,我还不太熟悉。
一:这个可以有。正好可以正向思维和逆向思维齐上阵。
delete 删除了什么?
删除对象的某个属性
我们会按照 MDN 文档定义的那样,「delete 操作符用于删除对象的某个属性」,先来尝试删除对象的属性:
var obj = {nam