OOP in Javascript

Just recently, I took up a course on Educative where I am learning Object-Oriented Programming in Javascript. The concept of object-oriented programming (OOP) is a programming style in Javascript that involves creating objects containing data and methods for interacting with the data. It enables code reuse and is a powerful way to structure code. Encapsulation, abstraction, inheritance, and polymorphism are all OOP principles used in Javascript. I have learned about object literals and constructor functions so far. Now let's talk about Object Literals. These are objects that contain properties (key: value) pairs. Accessing the properties is easy, as well as accessing those of the nested objects. I'm facing difficulty modifying property and method values. At first, I was confused about why we are even using the constructor function. However, I understand the importance of it because of how easy it is to create thousands of objects. Also, I still don't know why I am adding properties to the prototype (hidden object inside every constructor function you write). How can we use the prototype object? Additionally, it's a bit confusing because when we try to access the prototype object it shows the constructor function and then we access the prototype value it shows null and that object is present in every object you create because it is present in the constructor function. I've also learned how to protect the constructor function. I've learned how we cannot access the properties outside the function & how we can only access via methods inside the function. Now I have a 30-minute assessment to test my skills. I hope I perform well.