Javascript 在JS中创建动态变量名

Javascript 在JS中创建动态变量名,javascript,jquery,Javascript,Jquery,我该怎么做?我不能或更确切地说不想使用window[]或scope[] 因为这三个变量都是几何体字段,所以最好使用一个对象而不是三个独立变量: var $geometryPointFields = $('[class*="Point"]', $panel), $geometryLineFields = $('[class*="Line"]', $panel), $geometryPolygonFields = $('[class*="Polygon"]', $panel); f

我该怎么做?我不能或更确切地说不想使用
window[]
scope[]

因为这三个变量都是几何体字段,所以最好使用一个对象而不是三个独立变量:

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() // ?
}
然后,您可以使用
几何体
字符串访问对象的属性:

const geometryFields = {
  Point: $('[class*="Point"]', $panel),
  Line: $('[class*="Line"]', $panel),
  Polygon: $('[class*="Polygon"]', $panel)
};
如果必须使用独立变量,可以
eval
,但实际上不应该
eval

$geometryPointFields=$('.point');
函数showGeom(classStr){
eval(“$geometry”+classStr+”字段”).show();
}
setTimeout(()=>showGeom('Point'),1500)
.point{display:none}


因为这三个变量都是几何体字段,所以最好使用对象而不是三个独立变量:

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() // ?
}
然后,您可以使用
几何体
字符串访问对象的属性:

const geometryFields = {
  Point: $('[class*="Point"]', $panel),
  Line: $('[class*="Line"]', $panel),
  Polygon: $('[class*="Polygon"]', $panel)
};
如果必须使用独立变量,可以
eval
,但实际上不应该
eval

$geometryPointFields=$('.point');
函数showGeom(classStr){
eval(“$geometry”+classStr+”字段”).show();
}
setTimeout(()=>showGeom('Point'),1500)
.point{display:none}


您的变量是使用jQuery选择器的响应形成的。为什么不直接在函数中选择并显示元素

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

您只需确保在该函数中可以访问
$panel
,并且它应该可以正常工作。

您的变量是使用jQuery选择器的响应形成的。为什么不直接在函数中选择并显示元素

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

您只需确保此函数可以访问
$panel
,并且它应该可以正常工作。

几何图形是字符串吗?@CertainPerformance是字符串。所以,
$('geometry'+geometry+'Fields')
?@Xufox Yea,我不知道,所以就为这个例子编了一个。可能是重复的。您永远不需要或想要未知的变量名。请改用对象:
const geometry={$geometryPointFields:$('[class*=“Point”],$panel),$geometryLineFields:$('[class*=“Line”],$panel),
};log(几何图形[“几何图形”+几何图形+“字段”].show())。另外:.
几何体
是字符串吗?@CertainPerformance是,是字符串。所以,
$('geometry'+geometry+'Fields')
?@Xufox Yea,我不知道,所以就为这个例子编了一个。可能是重复的。您永远不需要或想要未知的变量名。请改用对象:
const geometry={$geometryPointFields:$('[class*=“Point”],$panel),$geometryLineFields:$('[class*=“Line”],$panel),
};log(几何图形[“几何图形”+几何图形+“字段”].show())。另外:。它是适当的。它是适当的。