function inherit(Child, Parent) {
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
Child.prototype.parent = Parent;
}
// `super` is reserved word
function sup(obj, method) {
var args = Array.prototype.slice.call(arguments, 2)
return obj.parent.prototype[method].apply(obj, args);
}
function Animal(name, sound) {
this.name = name;
this.sound = sound;
}
Animal.prototype.say = function() {
console.log('%s says %s', this.name, this.sound);
};
function Cat() {
this.counter = 0;
this.parent.call(this, "cat", "meow");
}
inherit(Cat, Animal);
Cat.prototype.say = function(){
sup(this, "say");
console.log("method called %s times", ++this.counter);
};
var cat = new Cat();
cat.say();
cat.say();
cat.say();
Я еще магии немного принес, только вот что-то мне не нравится моя функция `sup`