germancin
1/11/2018 - 6:16 PM

A quick playground for pseudo-classical inheritance

A quick playground for pseudo-classical inheritance

function Fruit(attrs) {
  this.type = attrs.type;
  this.name = attrs.name;
  this.isRipe = attrs.isRipe;
  this.calories = attrs.calories;
}
constructor

Fruit.prototype.calculateCalories = function() {
  console.log(`Calories in a ${this.name} are ${this.calories * 200}`);
};

function Banana(banAttrs) {
  Fruit.call(this, banAttrs);
  this.doMonkeysEat = banAttrs.doMonkeysEat;
}

function Kiwi(kiwiAttrs) {
  Fruit.call(this, kiwiAttrs);
  this.isFuzzy = kiwiAttrs.isFuzzy;
}

Banana.prototype = Object.create(Fruit.prototype);
Banana.prototype.ripen = function() {
  if(this.isRipe === false) {
    this.isRipe = true;
  }
};

Kiwi.prototype = Object.create(Fruit.prototype);

const myBanana = new Banana({
  type: 'tree',
  name: 'Banana',
  isRipe: false,
  calories: 1,
  doMonkeysEat: true,
});

const myKiwi = new Kiwi({
  type: 'tree',
  name: 'Kiwi',
  isRipe: false,
  calories: 3,
  isFuzzy: true,
});

console.log(myKiwi);
myKiwi.calculateCalories();
myBanana.calculateCalories();
myKiwi.ripen();