code: function deepFreeze(obj) {
          var _this = this;
  
          Object.freeze(obj);
  
          Object.getOwnPropertyNames(obj).forEach(function (prop) {
              if (obj.hasOwnProperty(prop) && obj[prop] !== null && (_typeof(obj[prop]) === 'object' || typeof obj[prop] === 'function') && !Object.isFrozen(obj[prop])) {
                  _this.deepFreeze(obj[prop]);
              }
          });
  
          return obj;
      }
docs: Call Object.freeze(obj) recursively on all unfrozen
  properties of obj that are functions or objects.
  
  @param  {Object} [obj] Object to freeze
  @return {Object}