我对
JavaScript很新我正在阅读JavaScript的好零件.它说 :
Every function object is also created with a prototype property
所以我做了这样的事情:
function test() { } console.log(test.prototype);
使用Chrome的开发人员工具,我会发现如下输出:
我真的很困惑这个输出.为什么构造函数的原型属性再次嵌套构造函数?为什么这样像一条链?我在哪里错过了这个概念?
提前致谢.
解决方法
一个函数的prototype属性保存该对象,当使用new操作符创建时,该函数的所有实例将继承.并且所有这些原型对象(通常)都有一个构造函数属性,它返回到函数中 – 那里有循环引用.所以,作为一个新的测试()继承该属性,(new test).constructor === test评估为true.
您将需要区分函数对象的原型属性和对象继承的原型对象 – 通常引用为“内部[[prototype]]属性.
一个构造函数是一个函数,不是说一个Function,而且都有两个.因此,它继承自Function.prototype对象,其中构造函数属性表示所有函数都由Function构造函数构造.如果您的开发人员控制台将显示Function对象的原型,您可以看到它们.我认为在设置中有一个选项.
所以,着名的“原型链”不是关于构造函数和/或原型属性,而是关于该对象从其继承的原型对象:
function test() {} new test() (a Function) (a test instance) || || || || \/ \/ Function.prototype test.prototype (a Function,by spec) (an Object) || || || || \/ \/ Object.prototype Object.prototype || || || || \/ \/ null null