Problem chyba w tym, że to jest błędne koło. Apply i call zrobili po to żeby kombinować z dziedziczeniem a programiści kombinują z dziedziczeniem żeby sprawdzić jak ładnie działa apply i call. Przykład użycia:
Object.prototype.inherit = function(supClass) {
this.superClass = new supClass();
this.base = function(name) {
var args = Array.prototype.slice.call(arguments, 1);
this.superClass[name].apply(this, args);
}
for (var property in this.superClass) {
this[property] = this.superClass[property];
}
};
function myClassA() {
this.val = 'A';
this.show = function(s) {
alert(s + this.val);
}
}
function myClassB() {
this.inherit(myClassA);
this.show = function() {
this.superClass.show('this = superClass, wiec val = ');
this.base('show', 'this = obj, wiec val = ');
}
}
var obj = new myClassB();
obj.val = 'B';
obj.show();
Jest jeszcze jedna możliwość zastosowania tych funkcji. Dzięki nim można zlikwidować wadliwe działanie attachEvent w IE gdzie this nie wskazuje na obiekt, z którego została wywołana funkcja podana jako drugi argument funkcji.