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