function Athlete(name) {
this.attack = function(opponent) {
print(name + ' attacked ' + opponent.name);
};
}
function Footballer(name, position) {
var self = new Athlete(name);
self.kick = function() {
print(this.name + ' shoots...');
shoot({
onSuccess: function() { print(name + ' scores!'); },
onFailure: function() { print('Juuust a bit outside.'); }
});
return self;
function shoot(callbacks) {
}
};
function Defender(name) {
var self = new Footballer(name, 'defender');
var superAttack = function() { return self.attack; }();
self.attack = function() {
superAttack();
slideTackle();
feignInjury();
};
return self;
function slideTackle() {
};
function feignInjury() {
};
}