阅读axios源码中工具函数
首先下载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源码中工具函数相关推荐
- axios源码中的10多个工具函数,值得一学~
大家好,我是若川.最近组织了源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列> ...
- 读 zepto 源码之工具函数
对角另一面 读 zepto 源码之工具函数 Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目 ...
- 帝国cms cj1.php,帝国cms源码中常用函数所在位置
帝国cms源码中常用函数所在位置 发布时间:2014-03-28 15:00:26 作者:佚名 我要评论 帝国cms常用函数所在位置归总,使用帝国cms的朋友可以收藏下 帝国cms常用函数所在 ...
- lodash源码中debounce函数分析
lodash源码中debounce函数分析 一.使用 在lodash中我们可以使用debounce函数来进行防抖和截流,之前我并未仔细注意过,但是不可思议的是,lodash中的防抖节流函数是一个函数两 ...
- 读zepto源码之工具函数
2019独角兽企业重金招聘Python工程师标准>>> Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.e ...
- FFmpeg学习之(一)阅读FFmpeg源码的工具选择
工欲善其事,必先利其器.ffmpeg的源码非常多,为了方便查看各个函数之间的调用关系和定义等,windows下个人推荐的阅读工具是Source Insight.用过的朋友应该知道Source In ...
- axios源码——工具函数utils.js
文章目录 前言 一.工具函数所在目录 二.判定数据类型的函数 1.isArray(判定数组) 2.isString(判定字符串) 3.isNumber(判定数值) 4.isObject(判定对象) 5 ...
- 学习 axios 源码整体架构,打造属于自己的请求库
前言 这是学习源码整体架构系列第六篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 学习源码整体 ...
- axios post object object_深入学习Axios源码(构建配置)
axios是我们日常代码中常用的一个http库,它可以用来在浏览器或者node.js中发起http请求:它强大的功能和简单易用的API受到了广大前端童鞋们的青睐:那么它内部是如何来实现的呢,让我们走进 ...
最新文章
- python中矩阵拼接_numpy实现合并多维矩阵、list的扩展方法
- DPDK uio驱动实现(二十)
- 随机数的产生可用于的场景验证码 密码
- Spring MVC-01循序渐进之Model 2和MVC
- scala 方法、函数定义小结
- input数字开头不能为0_李商隐为初恋写诗,每句以数字开头,最后10字一直被仿从未被超越...
- Python函数(1)
- java.securti_springboot集成springsecurity 使用OAUTH2做权限管理的教程
- asp.net控件全部清空、全部启用、全部禁用方法
- 创建和删除目录mkdir/rmdi
- BZOJ4237 稻草人
- 使用易宝支付接口实现java网上支付功能。
- SPSS偏相关分析的应用介绍
- DDR March系列算法整理
- 2021年山东省安全员A证考试题及山东省安全员A证考试试卷
- H3C s5820v2 堆叠2台机器配置说明
- 2018-2-13-win10-uwp-活动磁贴
- 基于阿里云物联网的APP简单开发
- cdr最新软件下载2023中文版电脑64位免费安装包
- 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)
热门文章
- element表格二级表头分两行显示
- Java修炼之凡界篇 筑基期 第05卷 数组 第03话 数组基本特点和边界
- win10共享能打开打不开服务器文件,win10系统下共享文件夹无法打开如何解决
- 算法小抄9-快慢指针
- 视频教程-清华-尹成老师-java基础-Day22-Java
- windows平台上的PHP运行在IIS,Apache,Nginx的性能和速度测试日志
- 机器学习算法——详细介绍 集成学习,以及什么是Bagging、随机森林、Boosting、XGBoost
- 滴滴持续扩招私车 倒逼官方就范
- PyTorch 07—计算机视觉基础
- 在ios8的设备上设置ikev2 按需连接×××, 与同时支持IKEv2和IKEv1的strongSwan ×××服务器...