util.isDeepStrictEqual(val1, val2[, options])
val1<any>val2<any>skipPrototype<boolean> 如果为true,在深度严格相等检查中将跳过原型和构造函数的比较。默认值:false。- 返回:<boolean>
如果 val1 和 val2 之间存在深度严格相等,则返回 true。否则,返回 false。
【Returns true if there is deep strict equality between val1 and val2.
Otherwise, returns false.】
默认情况下,深度严格相等包括对对象原型和构造函数的比较。当 skipPrototype 为 true 时,即使对象的原型或构造函数不同,只要它们的可枚举属性深度严格相等,也可以被认为是相等的。
【By default, deep strict equality includes comparison of object prototypes and
constructors. When skipPrototype is true, objects with
different prototypes or constructors can still be considered equal if their
enumerable properties are deeply strictly equal.】
const util = require('node:util');
class Foo {
constructor(a) {
this.a = a;
}
}
class Bar {
constructor(a) {
this.a = a;
}
}
const foo = new Foo(1);
const bar = new Bar(1);
// Different constructors, same properties
console.log(util.isDeepStrictEqual(foo, bar));
// false
console.log(util.isDeepStrictEqual(foo, bar, true));
// true 有关严格深度相等的更多信息,请参见 assert.deepStrictEqual()。
【See assert.deepStrictEqual() for more information about deep strict
equality.】