code: function (id, soft) {
              if (soft === false) {
                  var props = components[id], prop;
                  for (prop in props) {
                      delete this[prop];
                  }
              }
              delete this.__c[id];
  
              this.trigger("RemoveComponent", id);
              return this;
          }
docs: @
  #.removeComponent
  @comp Crafty Core
  @sign public this .removeComponent(String Component[, soft])
  @param component - Component to remove
  @param soft - Whether to soft remove it (defaults to `true`)
  
  Removes a component from an entity. A soft remove (the default) will only
  refrain `.has()` from returning true. Hard will remove all
  associated properties and methods.
  
  @example
  ~~~
  var e = Crafty.e("2D,DOM,Test");
  e.removeComponent("Test");        //Soft remove Test component
  e.removeComponent("Test", false); //Hard remove Test component
  ~~~