Javascript 为什么console在我更改原型之前就注意到了我的更改?

Javascript 为什么console在我更改原型之前就注意到了我的更改?,javascript,Javascript,我正在学习Javascript原型,并对以下Javascript进行了修改: function Animal(name, sound) { this.name = name; this.sound = sound; } var dog = new Animal("Dog", "Bark"); console.debug(dog.__proto__); Animal.prototype.makeSound = function() {console.log(this.sound

我正在学习Javascript原型,并对以下Javascript进行了修改:

function Animal(name, sound) {
    this.name = name;
    this.sound = sound;
}

var dog = new Animal("Dog", "Bark");
console.debug(dog.__proto__);

Animal.prototype.makeSound = function() {console.log(this.sound);};
有趣的是,​<代码>控制台.debug(dog.\uuuu proto\uuuu)揭示了
makeSound
是动物类原型的一种方法

但是,我在后面的一行中将该方法添加到原型中。如果控制流在我的代码中还没有到达,为什么控制台会注意到原型有一个
makeSound
方法?

控制台是“活动的”。即使您先记录它,它也会反映以后的更改


据我所知,它在对象、函数和数组上的行为是这样的。但是,如果您记录字符串、布尔值和数字,它们会打印它们在记录时的含义。

如果您将
console.debug
更改为
console.log
它会按预期工作。@JamesMcLaughlin“按预期”是什么意思?我看不出调试和日志有什么区别。谢谢,这里也一样。我认为我看不出有什么不同。这取决于您使用的开发人员工具中的控制台。没有定义控制台正确行为的规范。哦,我明白了,谢谢。我使用的是ChromeWebDeveloper控制台。我以后会记住这一点-对象、函数、数组在记录时可能不处于控制流的状态。在最后一行设置断点。执行到那个断点。检查控制台。您将看到,
makeSound
不存在。谢谢!事实上,设置断点并检查局部变量表明
makeSound
方法不存在。