我注意到UnderScoreJS http://underscorejs.org/#isArray有很多围绕原生 Javascript 函数的包装函数。
举个例子:
_.isArray, _.isBoolean, _.isNaN?
这有什么原因吗?或者这些只是为了确保使用 underscoreJS 库时的代码一致性,或者只是为了增强这些功能?
例如,_.isArray 函数可以理解为:
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) === '[object Array]';
};
任何想法?
这是因为这些功能并非在所有浏览器中都存在。例如,尝试Array.isArray
在 IE8 中你将找不到它。
如今,现代浏览器越来越符合 ECMAScript 标准,这样的“垫片”越来越不需要,但情况并非总是如此!
您会在大多数 Javascript 框架中发现类似的看似冗余的函数,以确保它们的任何功能都不会因为给定浏览器中缺少某个函数而引发异常。
还有类似的功能_.each(obj, func)
作用于类似数组的对象,而您需要这样做时没有任何问题Array.prototype.forEach.call(obj, func)
(相比arr.forEach(func)
对于真正的数组)。所以这是除了确保forEach
首先存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)