Essentially when you create an object along with the properties you give the object it also creates a new object within it automatically. This new object within every object is called proto. The two underscores are to make sure that you do not try to change it accidentally. This new proto object has access to multiple methods. Without having to type in the object and property to get to the prototype function you can just type “this” which allows it to reach the prototype method because it knows it is attached to the original object.
The reason function constructors are powerful is the ability to add properties and methods to an object without having to repeat code. Here is the documentation of how to add properties and methods to objects.