Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class HandlerBase {
- constructor(info) {
- this.info = info;
- }
- handler(action, value) {
- switch (action) {
- case 'changeName':
- this.info.name = value;
- break;
- default:
- console.log('cannot match in default handler');
- }
- }
- a(test) {
- console.log(test)
- }
- }
- class HobbiesHandler extends HandlerBase {
- handler(action, value) {
- // super(action, value);
- switch (action) {
- case 'removeHobbies':
- this.info.hobbies = null;
- break
- case 'addHobby':
- this.info.hobbies.push(value)
- break;
- default:
- console.log('cannot match in any handlers');
- }
- }
- }
- let info = {
- name: 'Punn',
- age: 22,
- hobbies: [
- 'play games',
- 'read books'
- ]
- };
- let handlerMapping = {
- 'hobbies': HobbiesHandler
- }
- function changeInfo(info, handlerName, action, value) {
- let handlerClass = new (handlerMapping[handlerName] || HandlerBase)(info);
- handlerClass.handler(action, value);
- }
- changeInfo(info, 'hobbies', 'addHobby', 'sing songs');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement