关于原型的问题:
为什么有些Array方法有.prototype而有些没有?
为什么有些Array方法有.prototype而有些没有?
documentation声明“Array.prototype表示Array构造函数的原型”.
我试图调和这个语句,理解prototype是一个引用父类型的属性,因为这就是继承的实现方式.
如果后者为真,那么“拥有”map()和indexOf()等方法的父类型是什么?
我的主要问题是第一行的问题.
解决方法
I am trying to reconcile this statement with the understanding that prototype is a property referring to the parent type,since that is how inheritance is achieved.
否.与另一个对象(从中继承属性)的原型关系是通过不可见的链接完成的,有时表示为[[prototype]].
构造函数上的实际现有.prototype属性是该对象构造的所有实例都将继承的对象.
所以Array对象的原型(继承)链看起来像这样:
null ^ | Object.prototype ---> {hasOwnProperty(),…} // all objects inherit these ^ | Array.prototype ----> {map(),indexOf(),…} // all arrays inherit these ^ | {length,1,2,…} // an example array // as if constructed by new Array(5) or [42,7,6]
Why do some methods have .prototype and some don’t?
.prototype上可用的函数将由所有实例继承,如果它们是它们的方法,您可以直接在它们上调用它们.
直接放在构造函数上的函数,如Array.isArray或Array.of,不是与实例相关的,而是“静态”的.您主要使用非数组作为参数调用它们.