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

Par*_*lia 3 javascript code-design underscore.js

我注意到UnderScoreJS具有许多围绕本机Javascript函数的包装函数。

举个例子:

_.isArray, _.isBoolean, _.isNaN?
Run Code Online (Sandbox Code Playgroud)

有什么理由吗?还是在使用underscoreJS库时仅仅是为了确保代码一致性而已,还是无论如何都只是增强了这些功能?

例如,_。isArray函数可以简化为:

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

任何的想法?

dee*_*see 5

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

如今,现代浏览器越来越了解ECMAScript标准,并且越来越需要这种“垫片”,但并非总是如此!

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

还有一些类似的功能_.each(obj, func)可以对类似数组的对象起作用,而您需要做的却没有任何问题Array.prototype.forEach.call(obj, func)(与arr.forEach(func)真正的数组相比)。因此,这forEach是确保一开始就存在的另一个好处。