【问题标题】:Why does UnderscoreJS have wrapper functions around a lot of native Javascript functions?为什么 UnderscoreJS 有很多原生 Javascript 函数的包装函数?
【发布时间】:2014-08-06 17:20:41
【问题描述】:

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

举个例子:

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: javascript underscore.js


    【解决方案1】:

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

    如今,现代浏览器越来越符合 ECMAScript 标准,这样的“垫片”越来越少,但情况并非总是如此!

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

    还有像_.each(obj, func) 这样的函数可以毫无问题地作用于类似数组的对象,而您需要使用Array.prototype.forEach.call(obj, func)(与arr.forEach(func) 用于真正的数组相比)。因此,除了首先确保 forEach 存在之外,这是另一个好处。

    【讨论】:

    • obj 不是一个数组时,_(obj).eachobj.forEach 之间也存在问题。
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多