源码就一句话
在lodash有必要为了这一句话单独弄个方法吗,直接用js自带的不就好了
这个或许只是现在的代码吧。猜测有可能以前不是这样的,比如以前还没有isArray这个函数的时候,lodash实现了,后来浏览器广泛支持了Array.isArray或者babel本身能够转译了,lodash才移除了原有实现,并且为了兼容旧项目中的lodash.isArray,保留了这个函数。
特意查看了一下lodash的历史版本,版本0.1.0中isArray实现如下:
var nativeIsArray = Array.isArray var arrayClass = '[object Array]' var isArray = nativeIsArray || function isArray(value) { return toString.call(value) == arrayClass; };
Array.isArray不是自带的,低版本浏览器没这个方法
Array.isArray
反对楼上所有说是为了兼容的问题。
Array.isArray 是 ES5 引入的,发布于 2009 年;Lodash 第一个 RC 版 0.1.0 发布于 2013 年。到底谁兼容谁?
明明是出于方法命名的一致性考虑。
当你代码里都是 _.isBoolean()、_.isDate()、_.isNumber()、_.isString() 的时候,当然 _.isArray() 写起来更顺一些。
_.isBoolean()
_.isDate()
_.isNumber()
_.isString()
_.isArray()
查了下lodash源码里isArray的实现:
isArray
v3.10.1:
var isArray = nativeIsArray || function(value) { return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; };
v4.17:
var isArray = Array.isArray;
说明一开始lodash提供的是兼容的API isArray,后来把兼容代码去掉了,但是API isArray不能删啊,就造成了现在的样子了。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(4)
这个或许只是现在的代码吧。
猜测有可能以前不是这样的,比如以前还没有isArray这个函数的时候,lodash实现了,后来浏览器广泛支持了Array.isArray或者babel本身能够转译了,lodash才移除了原有实现,并且为了兼容旧项目中的lodash.isArray,保留了这个函数。
特意查看了一下lodash的历史版本,版本0.1.0中isArray实现如下:
Array.isArray
不是自带的,低版本浏览器没这个方法反对楼上所有说是为了兼容的问题。
Array.isArray
是 ES5 引入的,发布于 2009 年;Lodash 第一个 RC 版 0.1.0 发布于 2013 年。到底谁兼容谁?明明是出于方法命名的一致性考虑。
当你代码里都是
_.isBoolean()
、_.isDate()
、_.isNumber()
、_.isString()
的时候,当然_.isArray()
写起来更顺一些。查了下lodash源码里
isArray
的实现:v3.10.1:
v4.17:
说明一开始lodash提供的是兼容的API
isArray
,后来把兼容代码去掉了,但是APIisArray
不能删啊,就造成了现在的样子了。