src/Parse.js
function defineAttributes(object, attributes) {
    if (object instanceof Parse.Object) {
      if (!(attributes instanceof Array)) attributes = Array.prototype.slice.call(arguments, 1);
      attributes.forEach(function (attribute) {
        Object.defineProperty(object, attribute, {
          get: function () {
            return this.get(attribute);
          },
          set: function (value) {
            this.set(attribute, value);
          },
          configurable: true,
          enumerable: true
        });
      });
    } else if (typeof object == 'function') {
      return defineAttributes(object.prototype, attributes)
    } else {
      if (object instanceof Array) attributes = object;
      else attributes = Array.prototype.slice.call(arguments, 0);
      return function defineAttributesDecorator(target) {
        defineAttributes(target, attributes);
      }
    }
  }
function defineAttributes(object, attributes) {
    if (object instanceof Parse.Object) {
      if (!(attributes instanceof Array)) attributes = Array.prototype.slice.call(arguments, 1);
      attributes.forEach(function (attribute) {
        Object.defineProperty(object, attribute, {
          get: function () {
            return this.get(attribute);
          },
          set: function (value) {
            this.set(attribute, value);
          },
          configurable: true,
          enumerable: true
        });
      });
    } else if (typeof object == 'function') {
      return defineAttributes(object.prototype, attributes)
    } else {
      if (object instanceof Array) attributes = object;
      else attributes = Array.prototype.slice.call(arguments, 0);
      return function defineAttributesDecorator(target) {
        defineAttributes(target, attributes);
      }
    }
  }
function defineAttributes ( object , attributes ) { if ( object instanceof Parse . Object ) { if ( ! ( attributes instanceof Array ) ) attributes = Array . prototype . slice . call ( arguments , 1 ) ; attributes . forEach ( function ( attribute ) { Object . defineProperty ( object , attribute , { get : function ( ) { return this . get ( attribute ) ; } , set : function ( value ) { this . set ( attribute , value ) ; } , configurable : true , enumerable : true } ) ; } ) ; } else if ( typeof object == 'function' ) { return defineAttributes ( object . prototype , attributes ) } else { if ( object instanceof Array ) attributes = object ; else attributes = Array . prototype . slice . call ( arguments , 0 ) ; return function defineAttributesDecorator ( target ) { defineAttributes ( target , attributes ) ; } } }
Defines getters and setters for the attributes
of the given object or function prototype.
Or create a decorator that defines getters
and setters for the subclass Parse.Object.

@param {Object|Function|String|String[]} object
@param {...String|String[]=} attributes
@returns {*}
Defines getters and setters for the attributes of the given object or function prototype . Or create a decorator that defines getters and setters for the subclass Parse . Object .