我目前正在学习Javascript(我熟悉C#和Python),并且目前正在阅读的教程正在讨论两个对象之间的比较。在我完成的编码中(我有很多项目),从来没有真正需要这种东西。鉴于这可能对将来很重要,我想我会寻找何时/何处使用对象比较,但是我所能找到的只是关于如何的问题/答案,而不是为什么您应该在何时使用它。我想不出有什么办法可以比拟原始体之间的比较更好的情况,因此在此方面的任何帮助将不胜感激。
答案 0 :(得分:0)
当您有两个引用对象的变量并且要查看它们是否引用相同的对象时,将使用它。例如,使用window
对象,您可以
if (window !== window.top) {
console.log('This script must be running in an iframe!');
}
我想不出任何比原始方法更好的情况了
许多对象(包括window
)不能简单地转换为唯一基元。
您也许可以使用JSON.stringify
将普通对象转换为字符串,然后比较那些字符串,但这无助于您比较对象是否与内存中的确实是同一对象:
const obj1 = { prop: 'val' };
const obj2 = { prop: 'val' };
// They are not the same object
console.log(obj1 === obj2);
// But if you convert them to a primitive string first, you won't be able to tell
console.log(JSON.stringify(obj1) === JSON.stringify(obj2));
答案 1 :(得分:0)
冒用循环参数的风险,需要使用它时要使用它。 :-)
我想说它与C#大致相同。在这两种情况下,当您使用相等运算符时,它都会进行测试以查看它们是否是同一对象(而不是单独但等效的对象)。
例如,假设您有一个对象数组,并且该数组的内容可以更改。以后,您有一个应删除的对象。您将比较要删除的对象与数组中的对象,以查看是否应该删除它(通常在filter
操作中):
arrayOfObjects = arrayOfObjects.filter(obj => obj !== objToRemove);