code: function _checkBraces(key) {
    if (key.indexOf('{') !== -1 && key.indexOf('}') !== -1) {
      var ret = [];
      var tpl = '';
      var _keys = _splitKey(key);
      for (var i = 0; i < _keys.length; i++) {
        var _k = _keys[i];
        if (_k.indexOf('{') === 0 && _k.indexOf('}') === _k.length - 1) {
          var _subKeys = _keys.slice(i + 1).join('.');
          var suffix = _subKeys ? '.' + _subKeys : '';
          _k.slice(1, -1).split(',').forEach(function (__k) {
            ret = ret.concat(_checkBraces(tpl + __k.trim() + suffix));
          });
          break;
        }
        else {
          tpl += _k + '.';
        }
      }
      return ret;
    }
    return [key];
  }
docs: Generate list of keys
  Example1:
  <pre>
  var key = 'a.{b,c}';
  var mappedKeys = _checkBraces(key);
  console.log(mappedKeys); // ['a.b', 'a.c']
  </pre>
  Example2:
  <pre>
  var key = '{a,b}.{c,d}';
  var mappedKeys = _checkBraces(key);
  console.log(mappedKeys); // ['a.c', 'a.d', 'b.c', 'b.d']
  </pre>
  Example3:
  <pre>
  var key = 'a.{b.c,d.e}';
  var mappedKeys = _checkBraces(key);
  console.log(mappedKeys); // ['a.b.c', 'a.d.e']
  </pre>
  
  @param {string} key
  @returns {string[]}
  @private