为什么Object.is()在比较2时返回false;确切的;JavaScript对象值?

为什么Object.is()在比较2时返回false;确切的;JavaScript对象值?,javascript,Javascript,is()方法确定两个值是否相同 价值观 返回值:一个布尔值,指示两个 参数值相同 我可以使用以下简单类型测试Object.is(): Object.is('hello', 'hello'); // true Object.is(1, 1); // true Object.is(null, null); // true 我在MDN上也看到,我可以将其与“窗口”对象一起使用,如下所示: Object.is(window, window); // true 当我尝试比较两个简单的“精确”值时,它似

is()方法确定两个值是否相同 价值观

返回值:一个布尔值,指示两个 参数值相同

我可以使用以下简单类型测试Object.is():

Object.is('hello', 'hello'); // true
Object.is(1, 1); // true
Object.is(null, null); // true
我在MDN上也看到,我可以将其与“窗口”对象一起使用,如下所示:

Object.is(window, window); // true
当我尝试比较两个简单的“精确”值时,它似乎不起作用(或者可能我用错了方法)

具有以下两个简单对象:

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()
的吗?

这是因为它们不是相同的引用

注意:

var o1 = {a: "a"};
var o2 = o2;
Object.is(o1, o2);

结果为
true

这是因为它们不是相同的参考

注意:

var o1 = {a: "a"};
var o2 = o2;
Object.is(o1, o2);

结果是
true

原因是当我们有一个对象时,我们存储的是引用,而不是值本身。如果将
window
window
进行比较,则它们指向相同的对象引用

你可以用
比较对象值。

原因是当我们有一个对象时,我们存储的是引用,而不是值本身。如果将
window
window
进行比较,则它们指向相同的对象引用

你可以用
比较对象值。

两个不同的对象永远不会“完全相同”。对象相等性基于标识,而不是内容。如果您的应用程序中有一些关于表示概念上相同信息的对象的语义,那么您可以编写自己的比较代码来进行确定


在代码中,每个
{}
对象初始值设定项都会创建一个不同的对象。

两个不同的对象永远不会“完全相同”。对象相等性基于标识,而不是内容。如果您的应用程序中有一些关于表示概念上相同信息的对象的语义,那么您可以编写自己的比较代码来进行确定


在代码中,每个
{}
对象初始值设定项都会创建一个不同的对象。

因为它们不是同一个对象<代码>var o1={a:“a”};var o2=o1;对象是(o1,o2)在上查看此表,因为它们不是同一对象<代码>var o1={a:“a”};var o2=o1;对象是(o1,o2)请参阅上的此表