JSFiddle - React, Tailwind, and code Playground

by emepyc

JavaScript

Object.prototype.extend = function (source) {
  for (var k in source) {
    if (source.hasOwnProperty(k)) {
      this[k] = source[k];
    }
  }
}

// Base class
var Page = function () {};
Page.prototype = Object.create (Object.prototype, {
	sayHello: {
        enumerable: true,
        get: function () {
            return "hello!";
        }
    }
});

//var page = new Page;
// console.log("=> " + page.sayHello);


var MidPage = function () {};
MidPage.prototype = Object.create (Page.prototype, {
    sayHere: {
        enumerable: true,
        get: function () {
            return "Waiting...";            
        }
    }
});

//var mid = new MidPage();
//console.log(mid.sayHello);
//console.log(mid.sayHere);


var FrontPage = function () {};
FrontPage.prototype = Object.create(Page.prototype, {
    sayBye: {
        enumerable: true,
        get: function () {
            return "bye!";            
        }
    }
});
//extend(FrontPage.prototype, MidPage.prototype);
FrontPage.prototype.extend (MidPage.prototype);

var front = new FrontPage();
console.log(front.sayHello);
console.log(front.sayHere);
console.log(front.sayBye);

console.log(front instanceof FrontPage);
console.log(front instanceof Page);
console.log(front instanceof MidPage);