【发布时间】:2011-09-28 16:02:40
【问题描述】:
最近我试图了解原型链的技术方面。现在我有几个关于对象实例化的问题。
考虑以下代码:
var Foo = function(s) {
this._bar = s;
};
var fooInst = new Foo('test');
现在当我检查创建的对象时,然后:
Foo.prototype === Function.prototype; // true
fooInst.prototype === ?
fooInst.prototype.prototype === Object.prototype; // true
我想知道,fooInst.prototype 到底是什么。在 Chromes 检查器中,它似乎是某种带有constructor 属性的Foo。但我读到的所有关于原型的资料都表明fooInst.prototype === Foo.prototype 应该是真的。
所以我的问题是:JS 究竟是如何处理原型链的。当我打电话给new Foo 时会发生什么。
提前致谢!
编辑
所以我发现(在 Chrome 中)Object.getPrototypeOf(fooInst) === Foo.prototype; 是 true,但 Object.getPrototypeOf(fooInst) === Object.getPrototypeOf(Foo) 是 false。为什么会这样?
【问题讨论】:
-
Foo是一个函数,fooInst是一个Foo。
标签: javascript inheritance object prototype-programming