我是 JavaScript 新手,我正在关注 Douglas Crockford 的书The Good Parts。
它说:
每个函数对象也是用一个prototype
属性创建的。它的值是一个对象,其constructor
属性的值是函数。这与隐藏的链接不同Function.prototype
。
我知道函数对象链接到Function.prototype
,但是上面的行是什么意思?
有人可以为我简化吗?
我是 JavaScript 新手,我正在关注 Douglas Crockford 的书The Good Parts。
它说:
每个函数对象也是用一个prototype
属性创建的。它的值是一个对象,其constructor
属性的值是函数。这与隐藏的链接不同Function.prototype
。
我知道函数对象链接到Function.prototype
,但是上面的行是什么意思?
有人可以为我简化吗?
每个函数对象也是用一个
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
,那么这些方法将在使用该构造函数的构造对象上可用。