UNPKG

clone-class

Version:

Clone an ES6 Class as Another Class Name for Isolating Class Static Properties.

35 lines 1.23 kB
// eslint disable lowerCamelCase import assert from 'assert'; import { cloneClass, instanceToClass, } from '../src/mod'; class Employee { constructor(name) { this.name = name; } info() { console.info(`Employee ${this.name}, Company ${this.constructor.company}`); } } console.info(` # Example 1: cloneClass() `); const GoogleEmployee = cloneClass(Employee); GoogleEmployee.company = 'Google'; const MicrosoftEmployee = cloneClass(Employee); MicrosoftEmployee.company = 'Microsoft'; const employeeGg = new GoogleEmployee('Tom'); const employeeMs = new MicrosoftEmployee('Jerry'); employeeGg.info(); // Output: Employee Tom, Company Google employeeMs.info(); // Output: Employee Jerry, Company Microsoft console.info(` # Example 2: instanceToClass() `); const RestoreGoogleEmployee = instanceToClass(employeeGg, Employee); assert(RestoreGoogleEmployee === GoogleEmployee, 'Should get back the Class which instanciated the instance'); assert(RestoreGoogleEmployee !== Employee, 'Should be different with the parent Class'); const anotherEmployee = new RestoreGoogleEmployee('Mary'); anotherEmployee.info(); // Output: Employee Mary, Company Google console.info(); //# sourceMappingURL=example.js.map