Javascript : Object, Function, Prototype
Object
As we know an object is something that exists and owns a set of properties. The term object is used to refer anything in Javascript. From the list of objects available in Javascript, let us examine a few.
typeof(Array); // function
typeof(Number); // function
typeof(String); // function
typeof(Math); // object
typeof(JSON); // object
type function
ArrayNumberString
type object
MathJSON
The difference between these two group is that objects in the first group can be instantiated using new keyword, but the objects in the second group cannot be. So clearly behavior is what decides the type of an object in Javascript. To define behavior Javascript uses prototype, or a prototype defines the behavior of an object.
Prototype
object.__proto__ points to the prototype used by the object. Let us do a test in the console to explore an object
var book = new Object();
book.proto
Here prototype of book is Object. To be more specific book.__proto__ points to Object.prototype
Or in another way, Object.prototype is the prototype Object offers to new objects.
Object.prototype;
var book = new Object();
book.proto;

What is important is that
book is not cloning anything from Object, instead it re-using the behavior defined in Object.prototype by applying itself as the instance.
var book = “book”
book.proto;

Here prototype of
book is String. To be more specific book.__proto__ points to String.prototype, and you can see that book is inheriting the behavior of String via this link.
Function
Function in Javascript is a subroutine, which when called creates a closed scope. This closed scope is used create an object and store its properties.
Try the following console.
Object.proto
Function.proro

Object.proto.proto;
Function.proro__.proto;

To make it more clear

So here
- In the first level of the prototype chain
Functionis the prototype of bothObjectandFunction - But in the second level it is
Object
Please see the following diagram to understand how this has been achieved in multiple steps.
Function and Object are two building blocks of Javascript and features of these are efficiently utilized by recursively introducing them in the prototype chain in multiple steps.