Search code examples
javascriptprototypal-inheritancefunction-prototypes

Prototype property of functions


When I try to access the Prototype property of functions it gives me the following result:

console.log(Function.prototype); //  () { [native code] }

But when I perform the same operation on other objects like Arrays it shows me the actual prototype of Array where all the methods are linked

console.log(Array.prototype); //  [constructor: ƒ, concat: ƒ, copyWithin: ƒ, fill: ƒ, find: ƒ, …]

What I really want to know is why the Functions behave differently.


Solution

  • Logging functions with console.log will log the text of the function. If the function is not written in JavaScript - for example, like here, if the implementation is provided by the environment - it'll give you [native code] instead.

    But there's an easy way to log at the properties on the function, at least in Chrome: use console.dir.

    console.dir(Function.prototype)
    <img src=" https://i.sstatic.net/6GEij.png">

    which gives you the function properties as expected, at least in both Chrome and FF.

    The functionality of this Function.prototype is described here.