To put it simply, it's a way to recycle code using parent/ child pairing, allowing children to access any variables, methods, or functions that may have been declared in the parent. And, because you aren’t wasting space on code you have already written, this saves memory AND time!
Pseudoclassical instantiation uses a constructor function and the “new” operator to create an object and uses the “prototype” property to create the inheritance chain. Constructor functions are normally named with a capital letter to signify their importance to the reader. We can create a new object using the "new" keyword, which allows the child to inherit any properties of the parent. We can even make constructor functions that inherit from another constructor function using the .call( ) method!
Prototypal instantiation confusingly doesn’t use .prototype, but is very similar to pseudoclassical instantiation, with a few differences. We start by creating an object that will act as our constructor with it’s keys being the variables we want to be shared. However, rather than calling the original constructor to create a new inheritance, we create an entirely new object from out animal object using Object.create().
So, in conclusion, both prototypal and pseudoclassical instantiation, provide very useful means of reducing memory storage. Both cut down on the amount of typing one needs to do, reducing the chance for syntax errors. Both are much systematic, allowing for much more organized code. The only real differences being that prototypal uses a much more object focused approach, while pseudoclassical uses more of a functional approach.
So, at the end of the day, they both do the same thing, so it’s up to YOU!