It is possible in Javascript (ECMAScript) to do classical single inheritance nested to any depth, without any caveats.
This article concisely explores the mechanism in depth, including flaws in other approaches, internal Javascript algorithms, proper OOP data encapsulation with default constructors, and an optimized inheritance declaration syntax with both Object and Function prototype convenience methods.