Controlling inheritance
Inheritance of members between objects is a powerful feature. However, in some situation, we want to control how member are passed from the parent object to the child and what a derived object can do with inherited members. Let's analyze the most common ways to control inheritance in JavaScript.
Overriding methods
When creating a derived object, we usually want to give it a slightly different behavior from parent object. This new behavior can be implemented by adding new methods or properties, but sometimes we need to redefine a method or a property of the parent object. In this case, we are talking about overriding.
Let's consider an example of a Person definition with a getFullName() method returning the concatenation of name and surname:
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
Person.prototype.getFullName = function() {
return this.name + " " + this.surname;
}
Now, we want Developer inheriting from Person, but the...