Object Types (Blueprints) (Classes)

What is a prototype?

Prototype is the property on a function that is set as property if you are using the new keyword.

Definition of __proto__

__proto__ is the property on an object that points out the prototype that has been set out for that object
Let’s have a look at an example to get some clarity:

Example 1:

Lets say you had to type in the following in your browser console.

function Dog() {};  
//Then type  
Dog.prototype;  

There will automatically be an object created for that function.

However, if you had to create a basic object literal like giraffe

let Giraffe = {};  
//Then type  
Giraffe.prototype;  

Giraffe.prototype would be undefined. Hence going back to the definition of prototype. “A property on a function…”


__proto__ is added to constructor when the keyword new is used. It essentially acts as a reference point so that the constructor can know which prototype to reference.

if we create a dog constructor

function Dog() {};  
Dog.proto.breed = "Bulldog";  

Then create a myDoggie constructor

let myDoggie = new Dog();  

My myDoggie will have a __proto__ that
references the prototype of Dog.prototype

If we can a new attribute to the prototype like color__proto__ will reference the updated prototype

Dog.prototype.color = "maroon";  

myDoggie's __proto__ will equal Dog.prototype
Anyways, that's all for today. Happy coding!