为什么UnderscoreJS有很多原生Javascript函数的包装函数?

Why does UnderscoreJS have wrapper functions around a lot of native Javascript functions?

本文关键字:函数 包装 Javascript 原生 UnderscoreJS 为什么      更新时间:2023-09-26

我注意到UnderScoreJS有很多围绕原生Javascript函数的包装函数。

例如:

_.isArray, _.isBoolean, _.isNaN?

这有什么原因吗?或者这些只是为了确保使用下划线库时的代码一致性,或者只是增强这些函数?

例如,_。isArray函数得到这个

_.isArray = nativeIsArray || function(obj) {
    return toString.call(obj) === '[object Array]';
  };

任何想法?

这是因为这些功能并不是在所有浏览器中都存在。例如,在IE8中尝试Array.isArray,您将找不到它。

如今,现代浏览器越来越多地与ECMAScript标准保持同步,这样的"漏洞"越来越不需要了,但情况并非总是如此!

你会在大多数Javascript框架中发现类似的看似冗余的函数,以确保它们的特性不会因为在给定的浏览器中缺少函数而抛出异常。

也有像_.each(obj, func)这样的函数作用于类似数组的对象而没有任何问题,而你需要做Array.prototype.forEach.call(obj, func)(与arr.forEach(func)相比,一个真正的数组)。所以这是确保forEach出现在首位的另一个好处。