Object Fruit, prototype extend / js /

by asdf

JavaScript

var i = 1;

function Fruit(name) {
    this.name = name;
    this.canEat = true;
    this.index = i;
    i++;
}

Fruit.prototype.eat = function() {
    console.log('eat ' + this.name, this.index);
}
    
//console.log(Fruit.prototype.constructor === Fruit);

function Banana(name) {
    this.super(name);
    this.name = name;
    //this.canEat = false;
    this.skin = true;
}

function extend(subclass, superclass) {
    function F() {}
    F.prototype = superclass.prototype;
    subclass.prototype = new F();
    subclass.prototype.constructor = subclass;
    subclass.prototype.super = superclass;
    console.log(subclass.prototype.constructor);
}
console.log(Banana.prototype.constructor === Banana);
extend(Banana, Fruit);
console.log(Banana.prototype.constructor === Banana);


var bananaInstance = new Banana('banana');
bananaInstance.eat();

var bananaInstance1 = new Banana('banana1');
bananaInstance1.eat();

var apple = new Fruit('apple');

Fruit.prototype.throw = function() {};

Banana.prototype.foo = 1;