code: function(key, value, silent, recursive) {
          if (arguments.length === 1 && typeof arguments[0] === "string") {
              return this._attr_get(key);
          } else {
              return this._attr_set(key, value, silent, recursive);
          }
      }
docs: @
  #.attr
  @comp Crafty Core
  @kind Method
  
  @trigger Change - when properties change - {key: value}
  
  @sign public this .attr(String property, Any value[, Boolean silent[, Boolean recursive]])
  @param property - Property of the entity to modify
  @param value - Value to set the property to
  @param silent - If you would like to supress events
  @param recursive - If you would like merge recursively
  
  Use this method to set any property of the entity.
  
  @sign public this .attr(Object map[, Boolean silent[, Boolean recursive]])
  @param map - Object where each key is the property to modify and the value as the property value
  @param silent - If you would like to supress events
  @param recursive - If you would like merge recursively
  
  Use this method to set multiple properties of the entity.
  
  Setter options:
  - `silent`: If you want to prevent it from firing events.
  - `recursive`: If you pass in an object you could overwrite sibling keys, this recursively merges instead of just merging it. This is `false` by default, unless you are using dot notation `name.first`.
  
  @sign public Any .attr(String property)
  @param property - Property of the entity to modify
  @returns Value - the value of the property
  
  Use this method to get any property of the entity. You can also retrieve the property using `this.property`.
  
  
  @example
  ~~~
  this.attr({key: "value", prop: 5});
  this.attr("key"); // returns "value"
  this.attr("prop"); // returns 5
  this.key; // "value"
  this.prop; // 5
  
  this.attr("key", "newvalue");
  this.attr("key"); // returns "newvalue"
  this.key; // "newvalue"
  
  this.attr("parent.child", "newvalue");
  this.parent; // {child: "newvalue"};
  this.attr('parent.child'); // "newvalue"
  ~~~