code: function (name) {
              var self = this, dot = '.', path, attrVals = getAttrVals(self), attrConfig, getter, ret;
              if (name.indexOf(dot) !== -1) {
                  path = name.split(dot);
                  name = path.shift();
              }
              attrConfig = ensureNonEmpty(self.getAttrs(), name, 1);
              getter = attrConfig.getter;    // get user-set value or default value
                                             //user-set value takes privilege
              // get user-set value or default value
              //user-set value takes privilege
              ret = name in attrVals ? attrVals[name] : getDefAttrVal(self, name);    // invoke getter for this attribute
              // invoke getter for this attribute
              if (getter && (getter = normalFn(self, getter))) {
                  ret = getter.call(self, ret, name);
              }
              if (!(name in attrVals) && ret !== undefined) {
                  attrVals[name] = ret;
              }
              if (path) {
                  ret = getValueByPath(ret, path);
              }
              return ret;
          }
docs: Gets the current value of the attribute.
  @param {String} name attribute 's name
  @return {*}