【发布时间】:2010-11-01 22:38:14
【问题描述】:
我知道 JavaScript 函数对象的 prototype 属性被复制到使用该函数作为构造函数实例化的对象的内部 [[Prototype]] 属性(又名 __proto__)中。因此,我可以将此属性设置为我想充当原型的任何对象:
function Foo() {}
Foo.prototype = {
toString: function() { return "I'm a Foo!"; }
}
new Foo().toString()
// --> "I'm a Foo!"
将应该充当类方法的函数添加到新生成函数的现有原型中似乎是一种普遍的做法,如下所示:
function Bar() {}
Bar.prototype.toString = function() {
return "I'm a Bar!";
}
new Bar().toString()
// --> "I'm a Bar!"
不过,我不清楚prototype 属性的初始值 是什么。
function Baz() {}
Baz.prototype
// --> Baz {
// constructor: function Baz() {},
// __proto__: Object
// }
评论显示了 Chrome 的 JavaScript 控制台打印的内容。这是否意味着我创建的每个函数实际上都会创建 两个 对象?一个用于函数本身(constructor),另一个用于其原型?
这是在 ECMAScript 标准中的某个地方定义的吗?我试图找到它,但找不到。是否所有浏览器都以相同的方式处理这个问题?
【问题讨论】:
标签: javascript prototype