为什么UnderscoreJS有很多原生Javascript函数的包装函数?
Why does UnderscoreJS have wrapper functions around a lot of native Javascript functions?
我注意到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
出现在首位的另一个好处。
相关文章:
- 如何将函数包装在函数中以避免代码重复
- 尽管函数包装,但值在循环中未闭合
- 将同步函数包装到承诺中的最佳方法是什么?
- 计算三角形面积-作为变量工作,但不作为函数包装
- 如何将回调函数包装在其他回调函数中并从中调用
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 使用自执行函数包装命名空间
- 有人可以在 JavaScript 中解释这种函数包装语法吗?
- 使用 Jasmine 测试 JavaScript 函数包装在 jQuery 中
- 将全局函数包装在 (function($){ }(jQuery) 中
- 如何将纯函数包装到构造函数中
- 为什么这个由Typescript生成的JavaScript构造函数包装了一个立即调用的函数
- 将方法名称作为回调传递VS.用烦人的函数包装它
- 为什么函数包装不隐藏javascript中未调用的函数对象
- 什么'匿名函数包装器和javascript中的新函数包装器之间的区别
- 如何将EasleJS库中的MouseEvent构造函数包装在GWT中?
- chrome.tab .create函数包装器,为什么不工作
- 将在其他地方定义的异步函数包装在回调中
- 为什么有两种不同的角函数包装方法,哪一种最好?
- 是否有一种方法可以将jquery函数包装到对象中?