用户定义对象的简单比较(我假设您是在询问它们而不是关于诸如字符串和数字之类的原语),永远不会返回 true,因此使用它没有意义。您可以通过比较它们的原型和构造函数来检查两个对象是否属于同一类型,但是无论您使用 == 还是 === 都无关紧要。唯一的区别是比较可能返回 true。但这当然并没有说明实例的属性,两个具有相同原型和构造函数的实例可能具有不同的属性
function cat1 () {
this.name = "blacky";
this.age = 9;
}
function cat2 () {
this.name = "blacky";
this.age = 9;
}
var anton = new cat1()
var john = new cat2()
var kevin = new cat1()
console.log(anton == kevin) // false
console.log(anton == john) // false
console.log(anton === john) // false
console.log(anton === kevin) // false
console.log(anton.__proto__ == kevin.__proto__) // true
console.log(anton.constructor == kevin.constructor) // true
console.log(anton.constructor == john.constructor) // false
console.log(anton.__proto__ == john.__proto__) // false
总而言之,您的问题的答案是:不,无论您使用 == 还是 === 来比较 objects 都没有任何区别,因为比较它们总是返回 false。如果你想比较用户定义的(不是原始的)类型,你应该使用返回每个对象原型的对象的proto方法直接比较它们。