code: function createAttribute(name, value, isAttribute) {
    if (properties.hasOwnProperty(name)) {
      if (shouldSkip(name, value)) return '';
      name = (attributeNames[name] || name).toLowerCase();
      var attrType = properties[name];
      // for BOOLEAN `value` only has to be truthy
      // for OVERLOADED_BOOLEAN `value` has to be === true
      if ((attrType === types.BOOLEAN) ||
          (attrType === types.OVERLOADED_BOOLEAN && value === true)) {
        return escape(name);
      }
      return prefixAttribute(name) + escape(value) + '"';
    } else if (isAttribute) {
      if (value == null) return '';
      return prefixAttribute(name) + escape(value) + '"';
    }
    // return null if `name` is neither a valid property nor an attribute
    return null;
  }
docs: Create attribute string.
  
  @param {String} name The name of the property or attribute
  @param {*} value The value
  @param {Boolean} [isAttribute] Denotes whether `name` is an attribute.
  @return {?String} Attribute string || null if not a valid property or custom attribute.