implementation of angular.isBoolean?

implementation of angular.isBoolean?

本文关键字:isBoolean angular of implementation      更新时间:2023-09-26

我正在审查一些源代码,下划线/lodash仅用于_.isBoolean函数。下划线来源在下面:

_.isBoolean = function(obj) {
    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};

查看ng中的功能组件,我看到类似的功能(angular.isObject, angular.isString, angular.isNumber等),但没有angular.isBoolean功能。

angular.js源代码中有一个内部函数(见下文),但是一个请求public (feat: register isBoolean作为全局angular #5185的公共成员)的问题被关闭了,说"其他库如underscore和lodash很好地解决了这些问题"。

function isBoolean(value) {
  return typeof value === 'boolean';
}

:

  • 我最初的反应是复制isBoolean并在我的代码中创建一个命名函数,但哪个实现更正确?
  • 我是否使用下划线版本以预期与未来升级的兼容性?
  • 我认为这是一个坏主意,"鸭击"我的实现到angular.isBoolean ?

我正在审查一些源代码,下划线/lodash只是为_。isBoolean函数。我最初的反应是将isBoolean转换为一个局部函数

是的,好主意(如果你强调只是)。甚至可能不是一个函数,而是简单地内联它。

但哪个实现更正确?

当传入的对象是Boolean类的实例时,它们的行为不同。这种情况会发生在你正在评论的应用程序中吗?可能不会。如果它们存在,只有您知道是否要将它们视为布尔值。

除此之外,val === true || val === false具有与typeof val == "boolean"相同的效果。

我认为将我的实现"duck punch"到angular.isBoolean中是一个坏主意?

angular不太可能这样做,所以你几乎不会引起碰撞。不过,问问你自己:它在那里真的有用吗?其他代码会使用它吗?要了解更多内容,请查看不要修改不属于您的对象