Javascript 为什么浏览器显示的原型属性不同?

Javascript 为什么浏览器显示的原型属性不同?,javascript,Javascript,我有以下脚本: var Person = function (name) { this.name = name; }; var person = new Person('James'); console.log(person.name); var anotherPerson = new Person('Kate'); console.log(anotherPerson.name); console.log(Person.prototype); Chrome中的控制台显示了以下内容: Ja

我有以下脚本:

var Person = function (name) {
this.name = name;
};

var person = new Person('James');
console.log(person.name);

var anotherPerson = new Person('Kate');
console.log(anotherPerson.name);

console.log(Person.prototype);
Chrome中的控制台显示了以下内容:

James
Kate
Person {}
当Mozilla的控制台显示

James
Kate
Object {}
我认为最后一个变体是正确的。那么问题是为什么Chrome会显示这一点?我已经读到不同的浏览器实现____________________

谢谢。

console.log()不是标准配置。每个浏览器都有自己想要显示的内容的实现。在你的例子中,Chrome已经额外注意到它可以向你显示更多的信息,而不仅仅是对象的纯Javascript类型,Firefox没有做这些额外的工作

如果你在寻找一个理性的理由来解释为什么其中一个在做它正在做的事情,我怀疑你是否能找到一个。这只是实现上的不同。两者都没有错。一个是试图向你展示更多的信息。这两个实现只是做出了不同的选择。

console.log()不是标准。每个浏览器都有自己想要显示的内容的实现。在你的例子中,Chrome已经额外注意到它可以向你显示更多的信息,而不仅仅是对象的纯Javascript类型,Firefox没有做这些额外的工作

如果你在寻找一个理性的理由来解释为什么其中一个在做它正在做的事情,我怀疑你是否能找到一个。这只是实现上的不同。两者都没有错。一个是试图向你展示更多的信息。这两个实现只是做出了不同的选择。

console.log()不是标准。每个浏览器都有自己想要显示的内容的实现。在你的例子中,Chrome已经额外注意到它可以向你显示更多的信息,而不仅仅是对象的纯Javascript类型,Firefox没有做这些额外的工作

如果你在寻找一个理性的理由来解释为什么其中一个在做它正在做的事情,我怀疑你是否能找到一个。这只是实现上的不同。两者都没有错。一个是试图向你展示更多的信息。这两个实现只是做出了不同的选择。

console.log()不是标准。每个浏览器都有自己想要显示的内容的实现。在你的例子中,Chrome已经额外注意到它可以向你显示更多的信息,而不仅仅是对象的纯Javascript类型,Firefox没有做这些额外的工作

如果你在寻找一个理性的理由来解释为什么其中一个在做它正在做的事情,我怀疑你是否能找到一个。这只是实现上的不同。两者都没有错。一个是试图向你展示更多的信息。这两个实现只是做出了不同的选择。

如果您希望Firefox(有时还有Chrome)显示构造函数的名称,那么不要将Person设置为匿名(未命名)函数。以下内容将向您展示:

var Person = function Person(name) {//named function
  this.name = name;
};
console.log(Person.prototype);
为什么浏览器显示console.log不同的事情已经得到了回答(实现取决于浏览器)。Chrome将显示一个空对象,因为它就是这样。如果对象的属性太多,无法在一行中显示,您也可以在控制台中展开它(尝试
console.log(Array.prototype)

如果您希望Firefox(有时还有Chrome)显示构造函数的名称,那么不要将Person设置为匿名(未命名)函数。以下内容将向您展示:

var Person = function Person(name) {//named function
  this.name = name;
};
console.log(Person.prototype);
为什么浏览器显示console.log不同的事情已经得到了回答(实现取决于浏览器)。Chrome将显示一个空对象,因为它就是这样。如果对象的属性太多,无法在一行中显示,您也可以在控制台中展开它(尝试
console.log(Array.prototype)

如果您希望Firefox(有时还有Chrome)显示构造函数的名称,那么不要将Person设置为匿名(未命名)函数。以下内容将向您展示:

var Person = function Person(name) {//named function
  this.name = name;
};
console.log(Person.prototype);
为什么浏览器显示console.log不同的事情已经得到了回答(实现取决于浏览器)。Chrome将显示一个空对象,因为它就是这样。如果对象的属性太多,无法在一行中显示,您也可以在控制台中展开它(尝试
console.log(Array.prototype)

如果您希望Firefox(有时还有Chrome)显示构造函数的名称,那么不要将Person设置为匿名(未命名)函数。以下内容将向您展示:

var Person = function Person(name) {//named function
  this.name = name;
};
console.log(Person.prototype);

为什么浏览器显示console.log不同的事情已经得到了回答(实现取决于浏览器)。Chrome将显示一个空对象,因为它就是这样。如果对象的属性太多,无法在一行中显示,您也可以在控制台中展开它(尝试
console.log(Array.prototype)

客观地回答为什么Chrome的控制台显示
Person
和Firefox的显示
Object
的问题的唯一方法是,如果有可以引用的代码注释或文档给出理由。我怀疑有。他们只是对输出内容做出了不同的选择。看起来Chrome会输出对象的
构造函数的名称
属性,Firefox会输出文本“object”。两者都没有错。Chrome可能稍微有点帮助(或有点误导)。客观地回答为什么Chrome的控制台显示
Person
和Firefox的显示
Object
的问题的唯一方法是,如果有代码注释或文档可以引用,给出理由。我怀疑有。他们只是对输出内容做出了不同的选择。看起来Chrome会输出对象的
构造函数的名称
属性,Firefox会输出文本“object”。两者都没有错。Chrome可能会稍微有点帮助(或者有点误导)。客观地回答为什么Chrome的控制台显示
Person
和Firefox的显示
Object
的问题的唯一方法是