I see two questions 1) Is OOP bad 2) Should Composition be favored over Inheritance (this question assumes that oop is not bad, because both inheritance and composition comes within the context of OOP) Answer to 1- I hear a lot of kids say that, but i dont see them explaining any thing convincingly. OOP was an improvement over procedural thinking. The real fact is oop is pretty hard to comprehend and oops generally is implemented the way, the dominant developer sees the domain. It takes some effort to understand and learn oops and apply them practically. OOPs is meant for re usability, maintainability ,extensibility at the very least. There is another programming style called functional programming style. Javascript is one where functions are passed around. I think by the time the client side JS frameworks like angular started to prosper, OOPs had become defacto industry standard and ppl attempted to write oops style in JS which is where the problems started evolving 2) On this question. yes composition should be favoured over inheritence. I prefer inheritence for data (property) reuse and composition for behavior encapsulation