|
|
|
|
|
by nahname
4973 days ago
|
|
When I need to consider inheritance in Javascript, I just use composition. I feel like I am balancing out all the times I've mistakenly used inheritance, when I should have used composition. Most of the time, inheritance is the wrong tool. x is a y => inheritance x has a y => composition Consider, A rectangle is a quadrilateral object. Okay, what is a quadrilateral object? Is this what I am concerned with or do I only care about the height and width? Maybe... A rectangle has a height A rectangle has a width A rectangle has a set of quadrilateral properties Don't get me wrong, sometimes the 'is a' relationship is the true relationship. I just find many people have a very difficult time building 'proper OO' because they are taught to stuff everything into some hierarchy that either doesn't exist or is too rigid to be useful. Think of a "tree is a plant". What defines a plant? What defines a tree? What if you had to consider a fake christmas tree? That is obviously not a plant, but it has many of the same characteristics of a tree. Should it then inherit from a tree? What if your plant can grow? Now you have a christmas tree that can grow. |
|