Javascript 对象的原型 属性

Javascript object's prototype property

我有一个关于原型对象的问题。

我了解到构造函数有原型属性(不是[[prototype]] 属性),它表示原型对象。

ex) 如果函数的名称是 Person,原型对象的名称将是 Person.prototype

所以我在下面输入了这段代码。

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

var foo = new Person('foo');

console.dir(Person);

如果我的想法是正确的,Person 函数的原型 属性 必须指向 Person.prototype 但实际结果不同。

但是我的书说:

为什么Person.prototype的名字是'Object'???我不知道为什么... 我的精神要崩溃了...

有人请回答.. :(

您的 Person() 函数有一个 prototype 属性。 Person().prototype之所以叫Object,是因为它确实是一个对象。在console中,纯粹是说原型属性是一个对象

由于构造函数名称,它显示 Person,可能是因为作者使用了不同的 JavaScript/Browser 版本,或者完全是另一个版本。你得到的'Object'是正常的,你的代码应该可以正常运行。你可以忽略差异。

函数的 prototype 属性 允许您向代码添加属性。这是一个例子:

function Person(name, age, id) {
  this.name = name;
  this.age = age;
  this.id = id;
}

var me = new Person("Brian", 12, 0);

然后在代码中,如果你想添加一个 属性 到 person 函数,就像我最喜欢的编程语言:

Person.prototype.favLanguages = null;

当你想定义我最喜欢的语言时,你可以这样做:

me.favLanguages = ['JavaScript', 'Java', 'HTML', 'CSS'];