为什么Function.prototype上没有原型属性?

时间:2015-02-27 18:21:53

标签: javascript oop functional-programming prototype

这个问题有点迂腐。你事先得到了警告:)

我发现了一些东西,我想与你分享。让我们直截了当。

由于所有函数都应该具有原型属性,这是js中原型继承模型的中心,并且由于Function.prototype本身就是一个函数,所以你希望看到一个原型对象上的prototype属性,js中的所有函数都通过继承获取其方法和属性,但没有任何内容。

这个决定在这个特定函数上省略prototype是否有逻辑解释,或者仅仅因为文体原因而被删除,因为Function.prototype.prototype对某些人来说可能看起来很难看,或者{{1} prototype构造函数上的prop就像缺少js中所有原型的 god 更好的术语,因此本身不能有Function属性?

期待您的回答。

快乐编码:)

2 个答案:

答案 0 :(得分:1)

即使您的浏览器报告"功能",prototypes are objects或null。

答案 1 :(得分:0)

“所有函数都应该具有原型属性”

这从来都不是真的,在ES6中更是如此:

Array.prototype.slice.hasOwnProperty('prototype')  // false
let f = () => {}
f.hasOwnProperty('prototype')  // false
let o = { m() {} }
o.m.hasOwnProperty('prototype')  // false
class C { m() {} }
(new C).m.hasOwnProperty('prototype')  // false

JavaScript区分函数和构造函数。