javascript - 为什么在比较 2 个 "exact"JavaScript 对象值时,Object.is() 返回 false?

标签 javascript

The Object.is() method determines whether two values are the same value.

Return value: A Boolean indicating whether or not the two arguments are the same value.

我可以测试Object.is()使用简单的类型,例如:

Object.is('hello', 'hello'); // true
Object.is(1, 1); // true
Object.is(null, null); // true

我还在 MDN 上看到我可以将它与“窗口”对象一起使用,如下所示:

Object.is(window, window); // true

当我尝试比较两个简单的“精确”值时,它似乎不起作用(或者可能我以错误的方式使用它)

拥有这 2 个简单的对象:

var o1 = {a: "a"};
var o2 = {a: "a"};

所有这些比较都返回 false!

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

关于javascript - 为什么在比较 2 个 "exact"JavaScript 对象值时,Object.is() 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418009/

相关文章:

javascript - 事件传播和冒泡

javascript - event.point 未使用 paper.js 调整大小

javascript - 如何使用 jquery 查找表单

javascript - d3.js 和 json - 简单的示例代码?

javascript - 创建一个正则表达式来替换字符串中最后一次出现的字符

javascript - 如何同步声明 JS 对象,然后使用依赖于并发操作的数据编辑对象的属性

javascript - Angularjs:两个 View ,相同的 Controller - 共享范围

javascript - 如何将动态创建的元素注入(inject)到 React JSX 中的现有 div 中?

javascript - 如何使用CSS为图像添加低调(黑色,透明叠加)效果?

javascript - Github 中的代码与生产服务器上的代码不一样