docs: function attr(name, value) {
      var self = this;
      if (arguments.length === 0) {
        return self._attrs;
      }
      if (Util.isObject(name)) {
        // self._attrs = Util.deepMix(self._attrs, name);
        for (var k in name) {
          this._setAttr(k, name[k]);
        }
        self.clearBBox();
        this._cfg.hasUpdate = true;
        return self;
      }
      if (arguments.length === 2) {
        this._setAttr(name, value);
        self.clearBBox();
        this._cfg.hasUpdate = true;
        return self;
      }
      return self._attrs[name];
    }