这个问题的灵感来自 Yehuda Katz 的这篇文章。 相关部分是这样的:
为了便于面向对象编程,JavaScript 允许您使用 Function 对象作为用于新对象的原型和用于调用的构造函数的组合:
var Person = function(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } Person.prototype = { toString: function() { return this.firstName + ' ' + this.lastName; } }
在这里,我们有一个 Function 对象,它既是构造函数又是用作新对象原型的对象。
我很困惑,因为在我看来,充当构造函数的 Function 对象和原型是不同的。从 chrome 的以下控制台输出中可以清楚地看出这一点:
即构造函数就是上面的函数对象,有两个参数:firstName和lastName;而原型只是一个普通对象,它恰好具有一个属性(toString),而该属性又由单独的函数对象定义function() { return this.firstName + ' ' + this.lastName; }
是我误解了他在说什么,还是文章不正确?