37 lines
1.2 KiB
JavaScript
Executable File
37 lines
1.2 KiB
JavaScript
Executable File
// eslint disable lowerCamelCase
|
|
import assert from 'assert';
|
|
import { cloneClass, instanceToClass, } from '../src/mod';
|
|
class Employee {
|
|
name;
|
|
static company;
|
|
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
|