首先下载axios的源码,
然后运行start命令,

就会打开一个网址,

这网址就是axios的调试网址

在lib文件夹下有一个utils.js文件,这个就是工具函数的文件。

一,判断类型的方法有三种,一是typeof,但是typeof 无法区分null,数组和对象,通常我们会区分判断Array和Object,
二,instanceof,判断是否事对象,
三,toString.call,toSting.call()实际上就是Object.prototype.toSting.call(),改变this的指向,指向传递进去的参数

1.isArray判断是否是数组

function isArray(val) {return Array.isArray(val);
}

2.isUndefined,判断是否是undefined

function isUndefined(val) {return typeof val === 'undefined';
}

3.isBuffer判断是不是buffer

// 判断不是null,也不是undefined,constructor判断是否是构造函数,判断是否是方法,最后在用isBuffer方法判断
function isBuffer(val) {return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)&& typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
}

4.isFormData,判断是否是FormData

// toString.call(val) 意思就是改变方法中的this指向,指向传递进去的参数,也就是[val]。
function isFormData(val) {return toString.call(val) === '[object FormData]';
}

5.isString,判断是否是字符串

function isString(val) {return typeof val === 'string';
}

6.isObject,判读是不是对象

// 首先判断不为空,在判断typeof的类型
function isObject(val) {return val !== null && typeof val === 'object';
}

7.trim,去除首位空格

function trim(str) {return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
}

8.isStandardBrowserEnv 判断浏览器属性

function isStandardBrowserEnv() {if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||navigator.product === 'NativeScript' ||navigator.product === 'NS')) {return false;}return (typeof window !== 'undefined' &&typeof document !== 'undefined');
}

9.forEach遍历

function forEach(obj, fn) {// Don't bother if no value provided// 判断参数不为空,未定义if (obj === null || typeof obj === 'undefined') {return;}
// 判断类型是不是对象,如果不是对象,强制转成数组类型// Force an array if not already something iterableif (typeof obj !== 'object') {/*eslint no-param-reassign:0*/obj = [obj];}if (isArray(obj)) {// Iterate over array values// 如果是数组,for循环执行回调fnfor (var i = 0, l = obj.length; i < l; i++) {fn.call(null, obj[i], i, obj);}} else {// Iterate over object keys// 是对象,for循环执行回调fnfor (var key in obj) {// 只遍历可枚举属性if (Object.prototype.hasOwnProperty.call(obj, key)) {fn.call(null, obj[key], key, obj);}}}
}

阅读axios源码中工具函数相关推荐

  1. axios源码中的10多个工具函数,值得一学~

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列> ...

  2. 读 zepto 源码之工具函数

    对角另一面 读 zepto 源码之工具函数 Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目 ...

  3. 帝国cms cj1.php,帝国cms源码中常用函数所在位置

    帝国cms源码中常用函数所在位置 发布时间:2014-03-28 15:00:26   作者:佚名   我要评论 帝国cms常用函数所在位置归总,使用帝国cms的朋友可以收藏下 帝国cms常用函数所在 ...

  4. lodash源码中debounce函数分析

    lodash源码中debounce函数分析 一.使用 在lodash中我们可以使用debounce函数来进行防抖和截流,之前我并未仔细注意过,但是不可思议的是,lodash中的防抖节流函数是一个函数两 ...

  5. 读zepto源码之工具函数

    2019独角兽企业重金招聘Python工程师标准>>> Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.e ...

  6. FFmpeg学习之(一)阅读FFmpeg源码的工具选择

      工欲善其事,必先利其器.ffmpeg的源码非常多,为了方便查看各个函数之间的调用关系和定义等,windows下个人推荐的阅读工具是Source Insight.用过的朋友应该知道Source In ...

  7. axios源码——工具函数utils.js

    文章目录 前言 一.工具函数所在目录 二.判定数据类型的函数 1.isArray(判定数组) 2.isString(判定字符串) 3.isNumber(判定数值) 4.isObject(判定对象) 5 ...

  8. 学习 axios 源码整体架构,打造属于自己的请求库

    前言 这是学习源码整体架构系列第六篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 学习源码整体 ...

  9. axios post object object_深入学习Axios源码(构建配置)

    axios是我们日常代码中常用的一个http库,它可以用来在浏览器或者node.js中发起http请求:它强大的功能和简单易用的API受到了广大前端童鞋们的青睐:那么它内部是如何来实现的呢,让我们走进 ...

最新文章

  1. python中矩阵拼接_numpy实现合并多维矩阵、list的扩展方法
  2. DPDK uio驱动实现(二十)
  3. 随机数的产生可用于的场景验证码 密码
  4. Spring MVC-01循序渐进之Model 2和MVC
  5. scala 方法、函数定义小结
  6. input数字开头不能为0_李商隐为初恋写诗,每句以数字开头,最后10字一直被仿从未被超越...
  7. Python函数(1)
  8. java.securti_springboot集成springsecurity 使用OAUTH2做权限管理的教程
  9. asp.net控件全部清空、全部启用、全部禁用方法
  10. 创建和删除目录mkdir/rmdi
  11. BZOJ4237 稻草人
  12. 使用易宝支付接口实现java网上支付功能。
  13. SPSS偏相关分析的应用介绍
  14. DDR March系列算法整理
  15. 2021年山东省安全员A证考试题及山东省安全员A证考试试卷
  16. H3C s5820v2 堆叠2台机器配置说明
  17. 2018-2-13-win10-uwp-活动磁贴
  18. 基于阿里云物联网的APP简单开发
  19. cdr最新软件下载2023中文版电脑64位免费安装包
  20. 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)

热门文章

  1. element表格二级表头分两行显示
  2. Java修炼之凡界篇 筑基期 第05卷 数组 第03话 数组基本特点和边界
  3. win10共享能打开打不开服务器文件,win10系统下共享文件夹无法打开如何解决
  4. 算法小抄9-快慢指针
  5. 视频教程-清华-尹成老师-java基础-Day22-Java
  6. windows平台上的PHP运行在IIS,Apache,Nginx的性能和速度测试日志
  7. 机器学习算法——详细介绍 集成学习,以及什么是Bagging、随机森林、Boosting、XGBoost
  8. 滴滴持续扩招私车 倒逼官方就范
  9. PyTorch 07—计算机视觉基础
  10. 在ios8的设备上设置ikev2 按需连接×××, 与同时支持IKEv2和IKEv1的strongSwan ×××服务器...