I haven't come across cases where I was forced to use prototypes. Can someone describe a situation where it would be necessary to use prototype? Or even advisable to use prototype?
Part of the problem with JavaScript is that prototypes are an inherent part of the language, but wrapped up behind syntactic sugar that hides them away on the fringes of the language.
If you've created an object in JavaScript, you've used prototypes, just indirectly.
If you want to use inheritance in Javascript prototypes are where it's at.
The ObjectName.prototype.fn = function() {} pattern is also a more memory efficient way of defining object methods than doing function ObjectName() {this.fn = function() {}}, as the method is only defined once in the former case, but is defined every single time a object is created in the latter case.
Basically for the most part you don't have to use prototypes directly, but more you know about them the better.
If you've ever used jQuery, you've used prototypes directly. For example, with $("a").click(), "click" is a function on the jQuery object's prototype; ie, $.prototype.click . Since you're likely to have multiple jQuery objects in a script, it makes sense performance wise for all those functions to be on the prototype instead of properties of a newly created object every time you instantiate that object.
Any time you want to use OO abstractions, share methods between many objects, inheritance, encapsulate related actions, etc. You can do purely functional programming in JS, but more complex projects require OO least they turn into spaguetti.