JSFiddle - React, Tailwind, and code Playground

by abramhum

JavaScript

function equals(a, b, c) {
  console.log("a[=]" + a);
  if (a == b) {
    console.log(c);
  }
}

function test(a, fn) {
  console.log(a + " ---start function[=]");
  fn.apply(this);
  console.log(a + " ---Fnished");
}

var methods = {
    init: function(args) {
      return 'initializing...';
    },
    hello: function(args) {
      return 'Hello, ' + args;
    },
    goodbye: function(args) {
      return 'Goodbye, cruel ' + args;
    }
  },
  greet = function greet(options) {
    var args = [].slice.call(arguments, 0),
      initialized = false,
      action = 'init'; // init will run by default
    console.log("args[=]" + args);
    console.log("options[=]" + options);

    if (typeof options === 'string' &&
      typeof methods[options] === 'function') {
      action = options;
      args.shift();
    }
    return methods[action](args);
  };

test('Dynamic dispatch', function() {
  var test1 = greet(),
    test2 = greet('hello', 'world!'),
    test3 = greet('goodbye', 'world!');
  equals(test2, 'Hello, world!',
    'Dispatched to hello method.');
  equals(test3, 'Goodbye, cruel world!',
    'Dispatched to goodbye method.');
});