If we try to read a property from the
submarine object, the object itself is checked and if property is not found, it goes down the prototype chain checking each prototype object until a first occurrence of the property. The objects are alive and can be altered any time.
apply methods which are available on the Function prototype does the job. They provide the possibility to run a method in a specific context passed as a first parameter.