在javascript中,为什么{}!== Object()?

Ter*_*rry 2 javascript object

特定

    var o = {};
    var p = new Object();

    p === o; //false

    o.__proto__===p.__proto__  // true
Run Code Online (Sandbox Code Playgroud)

为什么这是假的?

请告诉我返回假的直接原因?

Aln*_*tak 6

这两个对象包含相同的东西(即什么都没有),但它们不是同一个对象.

Javascript的对象相等性测试要求两个参数引用完全相同的对象.

  • @caizZZz:考虑`var o = {}; var p = o;``p`和`o`指的是同一个对象.如果我修改了`p`的属性,那么`o`也会改变,因为它们都指向同一个实例. (2认同)

pim*_*vdb 5

所述===的对象被定义为:

11.9.6严格的等式比较算法

比较x === y,在哪里xy是值,产生truefalse.这样的比较如下进行:

...

7.返回trueif xy引用同一个对象.否则,返回 false.

在这种情况下,尽管两者都是空对象,但它们是分开创建的,因此不会引用同一对象.

作为旁注,两个结构都做同样的事情; 但通常的做法是使用{}.

  • @caizZZz:因为它们都从Object.prototype继承(只有一个)。 (2认同)