javascript - 为什么 lodash.isError 需要存在?

标签 javascript lodash

Lodash 提供了一种名为 _.isError 的方法。为什么我们需要使用该方法而不是 val instanceof Error

如果你查看源代码,你会看到:

    function isError(value) {
      if (!isObjectLike(value)) {
        return false;
      }
      var tag = baseGetTag(value);
      return tag == errorTag || tag == domExcTag ||
        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
    }

我不确定这种复杂性可以处理哪些情况 val instanceof Error 不能处理。

最佳答案

这有点做作,但这里就是 _.isError(val)val instanceof Error发散:

(假设<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>在html中)

function Foo() {
    this.message="a";
    this.name="a";
}
_.isError(new Foo) // true
new Foo instanceof Error // false

我不能说这是否是他们的预期行为,但这就是 lodash 方法处理额外复杂性的地方。

关于javascript - 为什么 lodash.isError 需要存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54816644/

相关文章:

javascript - 如何使用 lodash.js 或 underscore.js 过滤 json?

javascript - 将三个数组合二为一

javascript debounce : how to get e. 目标?

javascript - 使用lodash创建多级查找表

javascript - Extjs 中的容器与面板

javascript - Uncaught ReferenceError : cycleImages is not defined

javascript - Lodash 过滤以返回对象而不是长度为 1 的数组

javascript - 展平对象的嵌套数组,将父值添加到子值之前

javascript - 可折叠的树布局。将 Twig 均匀展开

javascript - 无法将数据从跨域 json 分配给 Ajax 中的变量