code: function createArrayOfChecker(arrayItemChecker) {
  
      return createChainableChecker(function (data, dataName, componentName, fullDataName) {
  
          if (typeof arrayItemChecker !== 'function') {
              throw new Error('[SAN ERROR] '
                  + 'Data `' + dataName + '` of `' + componentName + '` has invalid '
                  + 'DataType notation inside `arrayOf`, expected `function`'
              );
          }
  
          var dataValue = data[dataName];
          var dataType = getDataType(dataValue);
  
          if (dataType !== 'array') {
              throw new Error('[SAN ERROR] '
                  + 'Invalid ' + componentName + ' data `' + fullDataName + '` of type'
                  + '(' + dataType + ' supplied to ' + componentName + ', '
                  + 'expected array)'
              );
          }
  
          for (var i = 0, len = dataValue.length; i < len; i++) {
              arrayItemChecker(dataValue, i, componentName, fullDataName + '[' + i + ']');
          }
  
      });
  
  }
docs: 生成 arrayOf 校验器
  
  @param  {Function} arrayItemChecker 数组中每项数据的校验器
  @return {Function}