代码之家  ›  专栏  ›  技术社区  ›  eozzy

在JS中创建动态变量名

  •  0
  • eozzy  · 技术社区  · 7 年前
    var $geometryPointFields = $('[class*="Point"]', $panel),
        $geometryLineFields = $('[class*="Line"]', $panel),
        $geometryPolygonFields = $('[class*="Polygon"]', $panel);
    
    function(geometry) {
        // geomtery is either Point, Line or Polygon
        ${'geometry'+geometry+'Fields'}.show() // ?
    }
    

    我该怎么做?我不能或者更不想用 window[] scope[] .

    2 回复  |  直到 7 年前
        1
  •  3
  •   CertainPerformance    7 年前

    const geometryFields = {
      Point: $('[class*="Point"]', $panel),
      Line: $('[class*="Line"]', $panel),
      Polygon: $('[class*="Polygon"]', $panel)
    };
    

    geometry

    function showGeom(classStr) {
      geometryFields[classStr].show();
    }
    

    eval

    $geometryPointFields = $('.point');
    function showGeom(classStr) {
      eval('$geometry' + classStr + 'Fields').show();
    }
    setTimeout(() => showGeom('Point'), 1500);
    .point { display: none }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="point">point</div>
        2
  •  1
  •   31piy    7 年前

    function showElements(geometry) {
      $('[class*="' + geometry + '"]', $panel).show();
    }
    

    $panel