携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第34天,点击查看活动详情
前言
本篇章我们了解lodash里join、reverse、now的对外导出的方法的使用和实现,在了解其源码的过程中,对比与原生方法的差异性,同时也学习方法封装的严谨性。
join
join方法主要是将“数组”中的所有元素转换为由“分隔符”分隔的字符串。
参数说明:
- 参数1:数组类型,表示要转换的数组。
- 参数2:字符串类型,表示分隔元素
使用如下:
_.join(['a', 'b', 'c'], '~');
// => 'a~b~c'
在实现上,该方法会对参数进行判断,只有当参数array
不等于null时会调用Array.prototype.join方法,否则返回空字符串。
源码如下:
var arrayProto = Array.prototype;
var nativeJoin = arrayProto.join;
function join(array, separator) {
return array == null ? '' : nativeJoin.call(array, separator);
}
reverse
reverse方法主要是反转参数array
,使得第一个元素变为最后一个元素,第二个元素变为倒数第二个元素,依次类推。
使用如下:
var array = [1, 2, 3];
_.reverse(array);
// => [3, 2, 1]
console.log(array);
// => [3, 2, 1]
在实现上,reverse方法会对参数进行判断,只有参数不等于null是会调用Array.prototype.reverse方法,对于null则返回参数本身。 源码如下:
var arrayProto = Array.prototype;
var nativeReverse = arrayProto.reverse;
function reverse(array) {
return array == null ? array : nativeReverse.call(array);
}
now
now方法主要是获得Unix 纪元 (1 January 1970 00
:00:00 UTC) 直到现在的毫秒数。
now方法在实现上主要通过root变量去获取全局环境的Date方法去操作,root方法兼容了不同环境的全局方法提取。
源码如下:
import root from './_root.js';
var now = function() {
return root.Date.now();
};
小结
本篇章我们通过了解join方法、reverse方法以及now方法的使用和实现,对比原生数组方法,lodash内部在实现上进行了严谨性判断和处理,这也方便了我们在实际开发中对于参数的判断。