关于Chrome DevTools中JavaScript对象的日志信息混乱的原因是什么

关于Chrome DevTools中JavaScript对象的日志信息混乱的原因是什么,javascript,google-chrome,Javascript,Google Chrome,如果我在JSFIDLE中运行此命令: function Animal() { } var animal = new Animal(); console.log(animal); console.log(Animal.prototype); console.log(animal.__proto__); 然后我在Chrome的DevTool窗口的控制台中得到这些结果(3xAnimal{}): Animal {} (index):26 Animal {} (index):27 Animal {}

如果我在JSFIDLE中运行此命令:

function Animal() {
}

var animal = new Animal();

console.log(animal);
console.log(Animal.prototype);
console.log(animal.__proto__);
然后我在Chrome的DevTool窗口的控制台中得到这些结果(3x
Animal{}
):

Animal {} (index):26
Animal {} (index):27
Animal {} (index):28

在我看来,这是相当混乱的,因为我们只知道
动物。原型
动物。在这种情况下,原型指向同一个对象。或者有合理的理由这样做?

它将其显示为对象,并显示其内部的所有属性。在本例中,由于没有,因此显示为空白。但是,如果我们向方法添加一个属性

function Animal() {
    this.foo="bar";
}

var animal = new Animal();

console.log(animal);
console.log(Animal.prototype);
console.log(animal.__proto__);
我们得到:

Animal {foo: "bar"}
Animal {}
Animal {}
编辑:误读了问题

从:
创建对象时,其proto属性设置为引用与其内部[[Prototype]]相同的对象(即其构造函数的Prototype对象)。将新值指定给proto也会更改内部[[Prototype]]属性的值,但对象不可扩展的情况除外。

问得好。你会提出什么替代方案?你是在谈论数字吗<代码>26、27、28
?@第四,他说的是日志(动物)显示为
动物{}
。也许这些数字应该删除以使它更清楚。@thefourtheye no:),我说的是3x
Animal{}
@Tibos我扩展了我的问题以使它更清楚。问题的焦点是:为什么
Animal
Animal都是
类型的原型?@Tibos编辑以反映OP的帖子