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
不能解决的问题。
答案 0 :(得分:1)
这有点人为,但这是_.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方法处理额外复杂性的地方。