code: function createObjectOfChecker(typeChecker) {
  
      return createChainableChecker(function (data, dataName, componentName, fullDataName) {
  
          if (typeof typeChecker !== 'function') {
              throw new Error('[SAN ERROR] '
                  + 'Data `' + dataName + '` of `' + componentName + '` has invalid '
                  + 'DataType notation inside `objectOf`, expected function'
              );
          }
  
          var dataValue = data[dataName];
          var dataType = getDataType(dataValue);
  
          if (dataType !== 'object') {
              throw new Error('[SAN ERROR] '
                  + 'Invalid ' + componentName + ' data `' + dataName + '` of type'
                  + '(' + dataType + ' supplied to ' + componentName + ', '
                  + 'expected object)'
              );
          }
  
          for (var dataKeyName in dataValue) {
              /* istanbul ignore else  */
              if (dataValue.hasOwnProperty(dataKeyName)) {
                  typeChecker(
                      dataValue,
                      dataKeyName,
                      componentName,
                      fullDataName + '.' + dataKeyName
                  );
              }
          }
  
  
      });
  
  }
docs: 生成 objectOf 校验器
  
  @param  {Function} typeChecker 对象属性值校验器
  @return {Function}