Почему lodash.isError должен существовать? - PullRequest
0 голосов
/ 22 февраля 2019

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 нет.

1 Ответ

0 голосов
/ 22 февраля 2019

Это немного надумано, но вот где _.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 обрабатывает дополнительную сложность.

...