लोडाश _.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 नहीं।

2
Nick Heiner 22 फरवरी 2019, 00:39

1 उत्तर

सबसे बढ़िया उत्तर

यह थोड़ा गलत है, लेकिन यह वह जगह है जहां _.isError(val) और val instanceof Error विचलन करते हैं:

(मान लें <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script> एचटीएमएल में है)

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

मैं यह नहीं कह सकता कि क्या यह उनकी ओर से इच्छित व्यवहार है, लेकिन यह वह जगह है जहाँ लॉश विधि अतिरिक्त जटिलता को संभालती है।

4
swagrov 21 फरवरी 2019, 23:42