First Class Function In JavaScript

Some days ago, I was reading about Node.js, followed by hearing about the “First Class Function in JavaScript”, which was a new term for me. I searched about this on the internet and I found it more interesting, than I expected.Thus, I thought to write an article on this topic.

What is meant by “First Class Function” in JavaScript?

According to Wikipedia “In computer science, a programming language is said to have first-class functions if it treats functions as first-class citizens. Specifically, this means the language supports passing functions as arguments to other functions, returning them as the values from other functions, and assigning them to variables or storing them in data structures”. Functions in JavaScript are the first class objects, which means JavaScript functions are just a special type of the object, which can do all the things that regular objects do like string, object.

We can do the following with the functions in JavaScript.

  • Pass a parameter.
  • Return the function from another function.
  • Assign a function to a variable.
  • Assign function into an array.
  • Include in any data structure.
  • Function are an instance of an object.
  • Function can have the properties.

Now, w will take some example for better a explanation of all the points which we defined above.

Function Instance of Object

We know that JavaScript is an Object Oriented Programming language. Each and everything in JavaScript is treated as an object. Thus, a function is also an instance of an object. Let’s take an example:

Example

code

In this example, we can see whether if the condition is satisfied or not, since I asked if that function is having an instance of the objects or not.

Function can have properties

This was very interesting for me, that the function can have properties and function. It can link back to its constructor function.

Example

code

In the example, given above, we assign Name, Age and City properties to CallFun . How can it be possible that a function can have the properties? The reason behind it is that the function works as an object in JavaScript, so you assign the properties to the function.

Pass function as Parameter

You can pass a function as parameter to another function.

Example

code

In the example, mentioned above, we created Call1, Call2 and CallMe function, followed by passing Call1 and Call2 as the parameters of CallMe function.

Assign function to Variable:

We can assign any function to a variable.

Example

code

Return Function from another function

We can return a function from another function just like any other object integer or string.

Example

code

Assign Function to Array

You can assign a function to any array just like an integer or a string.

Example

code

In this example, we assign four functions to an array and call each function, using the index of an array.

Assign function as a value of the key in an object

This is one of the most known uses of a function in JavaScript. We can assign the function as a value of a key in any object.

Example

code

Partial Application

I think this is the most useful property of a function, where we can use a function in the partial Applications. In the previous example, we understood, that we can return a function from another function. Let's take another example.

Example

code

Partial Application is used to return a function, which is not complete and require some user input to compute the result. In this example, we create Add function, which takes an input and returns a function. As we passed 10 as a parameter, this value is stored in the function, which is returned from Add function and next time, when we pass 20 and 10, which are already stored and is added with 20; 30 is returned as an output.

Prototype Inheritance

Every JavaScript object has a prototype. The prototype is also an object. JavaScript is an object oriented programming language. It also supports the inheritance, but the type of inheritance is a prototype inheritance.

What is Prototype Inheritance

Prototype inheritance means there are no classes; an object inherits another object. JavaScript objects inherit the properties and methods from their prototype.

code

In this example, we create two function constructors“Animal” and “Cow”. In the prototype of “Cow”, we assign the “Animal” object, which means __proto__ link of Cow object link to the Animal object. When we try to access the “leg” and “Category” property, using the object of Cow, the interpreter doesn’t find it in Cow, it searches in __proto__ link, where it found the Category and leg property.

Output

Output

We can see that __proto__ property of Cow link to the Animal object. This is an example of prototype inheritance.

code

This is an example of prototype chain, where a prototype of an object inherits another object and this object is also assigned to the prototype property of another object. When an interpreter searches for Country_Name, first of all, it searches in object of City, when it doesn’t find it, it goes to __Proto__ property and finds  a link to State object, it searches for Country_Name in the state object and when again, it doesn’t find the Country_Name, it again goes to __proto__ property of the State object and finds a link to the Country Object, where it finds the Country_Name. Interpreter searches in __proto__ property, until it doesn’t find __proto__ as NULL.

code

In this example, we create State_ and Country_ property for __proto__ and assign the prototype of the Country object to Country_ and the prototype of the State object to State_. When you check the prototype of the City object, you find that it contains the definition of both Country and State objects.

Thanks for reading the article.