为什么UnderscoreJS具有围绕许多本机Javascript函数的包装函数?

时间:2014-08-06 17:20:41

标签: javascript underscore.js code-design

我注意到UnderScoreJS在本机Javascript函数周围有很多包装函数。

以例如:

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

这有什么理由吗?或者这些仅仅是为了确保使用underscoreJS库时的代码一致性,或者只是增强这些功能?

例如,_. isArray函数可以归结为:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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

现在,现代浏览器正在越来越多地了解ECMAScript标准,以及#34; shims"越来越少需要,但情况并非总是如此!

在大多数Javascript框架中,您会发现类似的看似冗余的函数,以确保它们的所有功能都不会抛出异常,因为在给定的浏览器中缺少函数。

还有像_.each(obj, func)这样的函数可以在没有任何问题的情况下对数组类对象起作用,而你需要Array.prototype.forEach.call(obj, func)(与真实数组的arr.forEach(func)相比)。这样,除了确保forEach首先存在之外,还有另一个好处。