JSFiddle - React, Tailwind, and code Playground

by skilldrick

HTML

<script src="https://raw.github.com/skilldrick/funcobj/master/funcobj.js"></script>

JavaScript

function methods(name) {
  function getName(self) {
    return name;
  }

  function setName(self, newName) {
    name = newName;
  }

  return function (methodName) {
    switch (methodName) {
    case 'name':
      return getName;
    case 'name=':
      return setName;
    }
  };
}

//initialize new object with 'Dave' as `name` argument
var dave = objMaker(methods, ['Dave']);

log(dave('name')()); //=> 'Dave'
dave('name=')('David');
log(dave('name')()); //=> 'David'