5

我是 JavaScript 新手,我正在关注 Douglas Crockford 的书The Good Parts

它说:

每个函数对象也是用一个prototype属性创建的。它的值是一个对象,其constructor属性的值是函数。这与隐藏的链接不同Function.prototype

我知道函数对象链接到Function.prototype,但是上面的行是什么意思?

有人可以为我简化吗?

4

1 回答 1

9

每个函数对象也是用一个prototype属性创建的。

var fn = function() { };
fn.hasOwnProperty("prototype"); // true

也就是说,对于 JavaScript 中的每个函数,每个函数都有一个prototype属性,就像任何其他 JavaScript 对象一样。


它的值是一个具有构造函数属性的对象,其值为函数。

prototype指向的对象具有constructor指向原始函数的属性。

fn.prototype.constructor === fn // true;

也就是说,您可以通过查看obj.prototype.constructor(除非它被覆盖)从构造的对象派生构造函数。


这与隐藏的链接不同Function.prototype

您创建的函数prototype对象与Function's原型不同。

fn.prototype != Function.prototype // true

也就是说,如果您增加Function.prototype,那么这些方法将在函数引用上可用。如果你扩充你的函数prototype,那么这些方法将在使用该构造函数的构造对象上可用。

于 2013-09-20T11:38:50.290 回答