Object.is()方法确定两个值是否相同 值。
返回值:表示两者是否的布尔值 参数是相同的值。
我可以使用以下简单类型测试Object.is()
:
Object.is('hello', 'hello'); // true
Object.is(1, 1); // true
Object.is(null, null); // true
我也在MDN上看到我可以将它用于" window"这样的对象:
Object.is(window, window); // true
当我试图比较2个简单"确切"值似乎不起作用(或者我可能以错误的方式使用它)
拥有这两个简单的对象:
var o1 = {a: "a"};
var o2 = {a: "a"};
所有这些比较都会返回错误!
Object.is(o1, o2); // false
Object.is(o1, {a: "a"}); // false
Object.is({a: "a"}, {a: "a"}); // false
您能否解释一下结果为何错误或我如何以错误的方式使用Object.is()
?
答案 0 :(得分:2)
这是因为它们不是同一个参考文献。
注意:
var o1 = {a: "a"};
var o2 = o2;
Object.is(o1, o2);
结果为true
。
答案 1 :(得分:0)
当我们有一个对象时,我们存储引用而不是值本身。如果您将window
与window
进行比较,则它们会指向相同的对象引用。
您可以使用https://lodash.com/docs/4.17.4#isEqual 比较对象值。
答案 2 :(得分:0)
两个不同的对象永远不会完全相同"。对象相等性基于身份,而不是内容。如果您的应用程序中有关于表示概念上相同信息的对象的某些语义,您可以编写自己的比较代码来进行确定。
在您的代码中,每个{ }
对象初始值设定项都会创建一个不同的对象。