Существует множество паттернов для реализации ООП в яваскрипте и каждый пытается доказать что его реализация лучше. Расширение через прототипирование и прочие.
Хотелось бы узнать ваше мнение по поводу следующего кода, представленным ниже образом я реализую механизм ООП для скрипта который пишу, что вы можете посоветовать в данном случае и на какие грабли в будущем я могу наступить.
//internal class Animal
var Animal = function () {
var animal = this;
//public variables and methods
animal.satiety = 0;
animal.eat = function () {
eat();
};
animal.getFood = function () {
return animal.satiety;
};
//private variables and methods
function eat() {
satiety++;
}
//constructor
(function () {
})();
//static methods
Animal.voice = function () {
console.log("Voice");
};
return animal;
};
// internal class Horse
var Horse = function () {
Horse = Animal;
var horse = new Animal();
//override parent function
horse.eat = function (count) {
horse.satiety += count;
};
horse.getFood = function () {
console.log("FOOD : " + horse.satiety);
};
return horse;
};
var horse = new Horse();
horse.eat(12);
Horse.voice();
horse.getFood();
console.log(horse);