code: function _merge(_one, _two, options, level){
      if (options === undefined) options = {}
      // 递归处理
      for (var _ in _two) {
          // 若_one不存在这个元素，直接赋值
          if (_one[_] === undefined) _one[_] = _two[_];
          // 若配置按默认右边元素优先覆盖，则覆盖，若level>=0的话则不处理，因为>=0的话代表始终保留左值
          else if (options[_] === undefined || options[_] === false) level >= 0 ? null:_merge(_one[_], _two[_], options[_], level - 1);
          // 保留左值，因此不处理
          else if (options[_] === true) continue;
          else _merge(_one[_], _two[_], options[_], level - 1);
      }
      return _one;
  }
docs: /*
  options中若其属性值为false或者undefined，则代表默认按照由_two覆盖_own的值
  options中若其属性值为true，则代表保留左边的第一个非空的值
   
  merge operation
  @param  {object} _one    need to merge
  @param  {Object} _two    need to merge
  @param  {Object} options options for merge method
  @param  {Number} level   merge level
  @return {Object}         the result of merge