OOP inheritance

by Artem

JavaScript

'use strict';

let Employee = function() {
  let id = Math.random();

  return function() {
    let Employee = {
      constructor(name) {
          this.name = name;
          this.id = id;
          return this;
        },
        sayHi() {
          console.log('Hello, my name is ', this.name);
        }
    };
    return Employee;
  };
};

let e1 = Object.create(Employee()()).constructor('Artem');
console.log(e1);

let e2 = Object.create(Employee()()).constructor('Max');
console.log(e2);