code: function parents(instance, context) {
              var results = []
              var parent
              if (context === undefined) return results
  
              // parents(instance, array)
              if (!Util.isString(context) && !context.nodeType && context.length) {
                  Util.each(context, function(item /*, index*/ ) {
                      results = results.concat(parents(instance, item))
                  })
                  return results
              }
  
              // 从当前组件 instance 开始，逐层向上遍历
  
              // parents(instance, component)
              if (context.options && context.render) {
                  parent = instance
  
                  // 在 instance 的祖先元素中，查找与 context.clientId 匹配的元素
                  while ((parent = CACHE[parent.parentClientId])) {
                      if (parent.clientId === context.clientId) {
                          results.push(parent)
                          break
                      }
                  }
  
              } else if (context.nodeType) {
                  // parents(instance, element)
                  parent = instance.element
  
                  // 在 instance 的祖先元素中，查找与 context 相等的元素
                  while ((parent = parent.parentNode)) {
                      if (parent === context) {
                          results.push(parent)
                          break
                      }
                  }
  
              } else {
                  // parents(instance, moduleId)    
                  parent = instance
  
                  // 在 instance 的祖先元素中，查找与 context 匹配的元素
                  while ((parent = CACHE[parent.parentClientId])) {
                      if (parent.moduleId === context) {
                          results.push(parent)
                      }
                  }
              }
  
              return results
          }
docs: /*
  查找父组件
  context
  moduleId
  component options render
  element   nodeType
  array