Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Availability = (Super = Object) => class extends Super {
- constructor() {
- super();
- this._isOpen = false;
- }
- open() {
- this._isOpen = true;
- return this;
- }
- close() {
- this._isOpen = false;
- return this;
- }
- isOpen() {
- return this._isOpen;
- }
- };
- const Membership = (Super = Object) => class extends Super {
- constructor() {
- super();
- this._members = {};
- }
- add(member) {
- this._members[member.name] = member;
- return this;
- }
- getMember(name) {
- return this._members[name];
- }
- };
- const Defaults = (Super = Object) => class extends Super {
- constructor(name = "The Saloon", specials = "Whisky, Gin, Tequila") {
- super();
- this._name = name;
- this._specials = specials;
- }
- };
- // This is multiple inheritance, **NOT** composition
- class Bar extends Defaults(Availability(Membership())) {}
- const myBar = new Bar("Moe's");
- myBar.add({"name": "Homer"}).open().getMember("Homer")
Add Comment
Please, Sign In to add comment