关于Chrome DevTools中JavaScript对象的日志信息混乱的原因是什么
如果我在JSFIDLE中运行此命令:关于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 {}
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 {} (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:),我说的是3xAnimal{}
@Tibos我扩展了我的问题以使它更清楚。问题的焦点是:为什么Animal
和Animal都是类型的原型?@Tibos编辑以反映OP的帖子